//转换罗马数字:键盘录入一个字符串 要求1:长度小于等于9 要求2:只能是数字 将内容变成罗马数字:
//1-I 2-II 3-III 4-IV 5-V 6-VI 7-VII 8-VIII 9-IX 如果录入数字为0则变成 ""(长度为0的字符串)
Romannumber();
public static void Romannumber(){ String roman[]=new String[]{"","I","II","III","IV","V","VI","VII","VIII","IX"}; Scanner sc=new Scanner(System.in); System.out.println("输入数字(不超过9位): "); String number=sc.next(); StringJoiner sj=new StringJoiner(","); if(Checkstr(number)){ for (int i = 0; i < number.length(); i++) { switch (number.charAt(i)) { case '0': sj.add(roman[0]); break; case '1': sj.add(roman[1]); break; case '2': sj.add(roman[2]); break; case '3': sj.add(roman[3]); break; case '4': sj.add(roman[4]); break; case '5': sj.add(roman[5]); break; case '6': sj.add(roman[6]); break; case '7': sj.add(roman[7]); break; case '8': sj.add(roman[8]); break; case '9': sj.add(roman[9]); break; default: sj.add(roman[0]); break; } } } System.out.println(sj.toString()); } //switch
public static void Romannumber(){ String roman[]=new String[]{"","I","II","III","IV","V","VI","VII","VIII","IX"}; Scanner sc=new Scanner(System.in); System.out.println("输入数字(不超过9位): "); String number=sc.next(); StringJoiner sj=new StringJoiner(","); if(Checkstr(number)){ for (int i = 0; i < number.length(); i++) { sj.add(roman[number.charAt(i)-48]); } } System.out.println(sj.toString()); }//使用ASCII码
public static boolean Checkstr(String str){ if(str.length()>9){ System.out.println("长度错误"); return false; }else{ for(int i=0;i<str.length();i++){ if(str.charAt(i)>'9'|str.charAt(i)<'0'){ System.out.println("输入有误"); return false; } } return true; } }
//调整字符串,A和B: A的旋转操作就是将A最左边的字符移到最右边,例如 A="abcd"——>"bcda",若经过若干次变化A能变为B,则返回true,否则返回false。
String A="abcde";
String B="bcde";
Transform(A,B);
public static String Rotate1(String str){ //法一:用StringBuilder char temp=str.charAt(0); int len=str.length(); StringBuilder sb= new StringBuilder(); for(int i=1;i<str.length();i++){ sb.append(str.charAt(i)); } sb.append(str.charAt(0)); return sb.toString(); }
public static String Rotate(String str){ //法二:将字符串变为数组 int len=str.length(); char arr[]=new char[str.length()]; arr=str.toCharArray(); char temp=str.charAt(0); arr[0]=arr[str.length()-1]; arr[str.length()-1]=temp; String result = new String(arr); return result; } public static boolean Transform(String str1,String str2){ String str=str1; int count=0; while(!str.equals(str2)){ str=Rotate(str); System.out.println("第 "+(count+1)+" 次旋转结果为:"+str); count++; if(count>str1.length()-1) { System.out.println(str1 + " 进行完一轮旋转,无法得到 " + str2); return false; } } System.out.println("经过 "+(count)+" 次旋转得到了:"+str2); return true; }
//输入任意字符串,打乱里面的内容
Scanner sc=new Scanner(System.in); System.out.println("输入字符串:"); s1=sc.next(); System.out.println(Disturb(s1));
public static String Disturb(String str){ char arr[]=str.toCharArray(); Random r=new Random(); for(int i=0;i<arr.length;i++){ int order=r.nextInt(arr.length); char temp=arr[i]; arr[i]=arr[order]; arr[order]=temp; } String result=new String(arr); return result; }
//生成验证码 内容可以是小写字母也可以大写还可以是数字,长度为5,四位是字母,一位是数字,位子随机。
System.out.println(GetVeCode());
public static String GetVeCode(){ Random r=new Random(); char number=(char)(r.nextInt(10)+48); int index=r.nextInt(5); char arr[]=new char[5]; for(int i=0;i<arr.length;i++){ if(i==index) arr[i]=number; else switch (r.nextInt(2)){ case 0: arr[i]=(char)(r.nextInt(26)+65); break; case 1: arr[i]=(char)(r.nextInt(26)+97); break; } } String result=new String(arr); return result; }
//用两个字符串来表示两个非负整数,返回两个数的乘积,并且同样以字符串表示
System.out.println("输入两个表示非负的整数的字符串: "); s1= sc.next(); s2= sc.next(); System.out.println(Multi_String(s1,s2)); int x=123456; System.out.println(IntToString(x));
public static String Multi_String(String str1,String str2){ String result; char arr1[]=str1.toCharArray(); char arr2[]=str2.toCharArray(); int number1=CharToInt(arr1); int number2=CharToInt(arr2); if(number1!=-1&number2!=-1){ int number3 = number1 * number2; result = IntToString(number3); return result; }else { return null; } } public static int CharToInt(char arr[]){ int time=arr.length; int arr1[]=new int[arr.length]; if(Checkarry(arr)){ for (int i = 0; i < arr.length; i++) { arr1[i] = arr[i] - 48; } int sum = 0, x = 1; while (time > 0) { sum = sum + arr1[time - 1] * x; x *= 10; time--; } return sum; }else return -1; } public static String IntToString(int num){ int count=0,temp=num,x=10; while(temp>0){ count+=1; temp/=10; } int arr[]=new int[count]; for(int i=count-1;i>=0;i--){ arr[i]=num%10; num=num/10; } char arr1[]=new char[count]; for(int i=0;i<count;i++){ arr1[i]=(char)(48+arr[i]); } String result=new String(arr1); return result; } public static boolean Checkarry(char arr[]){ for(int i=0;i<arr.length;i++){ if(arr[i]<48|arr[i]>57){ System.out.println("输入的字符串有误"); return false; } } return true; }
//输入一个英文句子组成的字符串,由若干单词组成,由空格隔开,返回字符串中最后一个单词的长度。
Scanner sc=new Scanner(System.in); //输入一个英文句子组成的字符串,由若干单词组成,由空格隔开,返回字符串中最后一个单词的长度。 System.out.print("输入一个英文句子: "); String s1 = sc.nextLine(); System.out.println(GetLength(s1));
public static int GetLength(String str) { int count = str.length(), len = 0; for (int i = str.length()-1; i >= 0; i--) { if (str.charAt(i) != ' ') len++; else break; } return len; }
知识点:
String str="ABC"; char arr[]=str.toCharArray(); //arr[]={'A','B','C'}
sc.next() 与sc.nextLine() 不能混用,会导致nextline无法正常读取键盘输入。