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

来源:互联网 发布:淘宝金酷娃玩具火车 编辑:程序博客网 时间:2024/06/07 07:04
学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,;
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;
}
}
0 0
原创粉丝点击