欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

学String类后的习题及二、八、十、十六、九进制之间相互转换

程序员文章站 2022-06-23 18:18:36
...
学String类后实现的简单习题
1、检查字符串是否是回文字符串
在学习String类后,发现做回文数可以不用数组做,只需要用到String类中的charAt(int index) 方法获取index处的char值,取到字符串首位的字符依次进行比较即可。
代码如下:
import java.util.Scanner;
public class Palindromic {
public static void main(String[] args){
System.out.println("请输入数据: ");
Scanner sc=new Scanner(System.in);
String s=sc.next();
boolean t=true;
for(int i=0,j=s.length()-1;i<=s.length()/2;i++){
//charAt(i))返回i处的 char 值 ,charAt(j))返回j处的 char 值
if(s.charAt(i)!=s.charAt(j)){
t=false;
break;
}
else{
j--;
}
}
if(t){
System.out.println("是回文数");
}else{
System.out.println("不是回文数");
}
}
}

2、删除给定字符串
删除给定的字符串只需要使用String类中的replace(char oldChar, char newChar) 方法实现,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的,删除便可把要删除的数替换成空字符即可,然后返回一个新的字符串。
代码如下:
import java.util.Scanner;
public class  Del {
public static void main(String[] args){
String str1="ab,ac,de,fg,hi,jk,lm,no";
System.out.println(str1);
System.out.println("请输入要删除的字符串: ");
Scanner sc=new Scanner(System.in);
String s=sc.next();
String str2=str1.replace(s, "");
System.out.println(str2);
    }
}

3、倒置字符串
倒置字符串的话需要定义一个空字符串放倒置后的字符串,先使用charAt(int index) 方法获取index处的char值,然后用取到的值累加进定义好的字符串中便轻松实现看字符串倒置。
代码如下:
public class two {
public static void main(String[] args){
String s="abcdefg";
String s1="";
for(int i=0;i<s.length();i++){
char t=s.charAt(i);
s1=t+s1;//用t加s1实现字符串倒置
System.out.println(s1);
}
}
}
4、去除随机生成字符串中的重复字符,并将新的字符串输出。
写了一个静态方法用Random类随机生成字符串,然后在主函数中调用并且使用contains(CharSequence s)方法去除重复字符。还可以直接用Math.random()直接随机产生字符串,再获取字符,只是要注意要进行类型转换,如:int t=(int)(Math.random()*str.length();char c = string.charAt(t);
代码如下:
import java.util.Random;
public class  random {
public static void main(String[] args){
String s1=removerepeatedchar("abcdefg");
System.out.println(s1);
String str1="";
for(int i=0;i<s1.length();i++){
char c = s1.charAt(i);
   //当且仅当str1字符串不包含c 值时,返回 true ,c+""使c变成字符串,然后把c加进str1中,从而达到去除重复的目的。
if(!str1.contains(c+"")){
str1+=c;
}
}
System.out.println(str1);
}
private static String removerepeatedchar(String string) {
Random rd = new Random();
String s="";
for(int i=0;i<10;i++){
int t = rd.nextInt(s1.length());//从s1中随机一个下标
char c = string.charAt(t);//取出下标t处的字符 s+=c;
}
return s;
}
}

5、验证码是目前网络中应用最广泛的一种安全机制,可防止一些不良信息的侵入。随着网络的发展,验证码也由原本简单的数字变成汉字校验。
     本实验要求使用Java分别获取四种验证码。
  1)、由数字0-9组成的全数字验证码
  2)、由英文字母和标点符号组成的字符验证码
  3)、全部由中文组成的验证码
  4)、字符+数字的混合验证码
代码如下:
用一个静态方法随机生成四个字符,然后在主函数中调用并传参数进去,便可产生想要的验证码(生成随机字符的方法与上题雷同)。
import java.util.Random;
public class Yanzhengma {
public static void main(String[] args) {
String str1 = "0123456789";
String str2 = "全部由中文组成的验证码";
String str3 = ",。;’“:、!?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
String str4 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
String code1 = randomString(str1);
System.out.println(code1);
String code2 = randomString(str2);
System.out.println(code2);

String code3 = randomString(str3);
System.out.println(code3);

String code4 = randomString(str4);
System.out.println(code4);

}
public static String randomString(String str) {
Random rd = new Random();
String code = "";
for (int i = 0; i < 4; i++) {
int t = rd.nextInt(str.length());
char c = str.charAt(t);
code += c;
}
return code;
}
}
6、编写一个Java程序,将一个八进制数转换成二进制、十进制、十六进制和九进制。也可以将一个十进制数转换成十六进制、八进制、十进制和二进制。
十进制转任意进制的基本思想是:用十进制数分别对2、8、9、16进制求余,然后处以该进制,直到被除数为零为止。(要注意十六进制转换时,a、b、c、d、e、f的表示时,如a的ASSCIL码为97,即当a=10时要加上87才能输出a)。
任意进制转十进制:例如八进制数144要转换成十进制,转成十进制即1乘8的二次方加上4乘8的2一次方加上4乘8的零次方。(要注意十六进制转换时,由于是用字符类型转整型输出,a、b、c、d、e、f要进行相应转换,如a的ASSCIL码为97,即当a=10时要减87才能输出int型数值,同样,2、8、9进制进行转换是也要把字符类型转换成int类型,故需要减48得到int型数值)。这样转换可能有点复杂,另一种方法是可以直接定义一个字符串然后把0-9、a-f放进去取其地址值,即:String s="0123456789abcdef";Char c=s.charAt(a);可以实现。
进制互相转换:例如八进制转十六进制,先把八进制数转换成十进制数,然后十进制数再转换成十六进制。
import java.lang.Math;
public class eight3 {
public static void main(String[] args) {
String s = changeNum(100, 16);
System.out.println(s);
int x = change2Num(s, 16);
System.out.println(x);
int t = change2Num("1100100",2);
String ss = changeNum(t,学String类后的习题及二、八、十、十六、九进制之间相互转换
            
    
    博客分类: java基础 String回文随机去重复验证码 ;
System.out.println(ss);
}

// 将十进制转换成对应的进制
/**
* 将十进制的数字转换成指定进制的数字字符串
*
* @param num
*            要转换的十进制数字
* @param t
*            进制
* @return 返回转换之后的数字字符串 char c=s.charAt(a);
*/
public static String changeNum(int num, int t) {
String s = "";
while (num > 0) {
int a = num % t;
if (a >= 10) {
char c = (char) (a +87);//String s="0123456789abcdef";
//Char c=s.charAt(a);
s = c + s;
} else {
s = a + s;
}
num = num / t;
}
return s;
}
public static int change2Num(String num, int t) {
int sum=0;
int j=0;
for(int i=num.length()-1;i>=0;i--){
char c = num.charAt(i);
if(c>=97){
sum+=(c-87)*Math.pow(t,j);//字母a的ASSCIL码值为97
}else{
sum+=(c-48)*Math.pow(t,j);//零的ASSCIL码值为48
}
j++;
}
return sum;
}
}