JAVA题目笔记(七)

//转换罗马数字:键盘录入一个字符串 要求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无法正常读取键盘输入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值