Java中字符串练习(方法toCharArray)

文章提供了两种Java方法将数字字符串转换为罗马数字,以及检查字符串是否符合规则。另外,还展示了如何通过字符串截取和字符数组操作实现字符串旋转,用于判断两个字符串是否可以通过旋转匹配。此外,文章提及了生成包含4位字母和1位数字的5位验证码的规范。

1.将字符串转换成罗马数字

eg:1234 ->ⅠⅡⅢⅣ

要求:①长度为小于等于9

           ②只能是数字,将内容变成罗马数字,罗马数字里是没有零的,可以变成长度为0的字符串

方法一:(查表法)

public class Test{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(true){
            System.out.println("请输入字符串");
            String str=sc.next();
            boolean flag=checkString(str);
            if(flag){
                break;
            }else{
                System.out.println("当前的字符串不合规则,请重新输入");
                continue;
            }
        }
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<str.length();i++){
            char c=str.charAt(i);
            int number=c-48;
            String romanNumber=changeRoman(number);
            sb.append(romanNumber);
        }
        System.out.println(sb);
    }
}

public static String changeRoman(int number){
    String[] romanArr={"","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ"};
    return romanArr[number];
}

public static boolean checkString(String str){
    if(str.length()>9){
        return false;
    }
    for(int i=0;i<str.length();i++){
        char c=str.charAt(i);
        if(c<'0'||c>'9'){
            return false;
        }
    }
    return true;
}

方法二:

我们可以用switch语句将上面的字符串“1234”转换为“ⅠⅡⅢⅣ”。

public class Test{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(true){
            System.out.println("请输入字符串");
            String str=sc.next();
            boolean flag=checkString(str);
            if(flag){
                break;
            }else{
                System.out.println("当前的字符串不合规则,请重新输入");
                continue;
            }
        }
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<str.length();i++){
            char c=str.charAt(i);
            String romanNumber=changeRoman(c);
            sb.append(romanNumber);
        }
        System.out.println(sb);
    }
}

public static String changeRoman(char c){
    String str=switch(c){
        case'0'->"";
        case'1'->"Ⅰ";
        case'2'->"Ⅱ";
        case'3'->"Ⅲ";
        case'4'->"Ⅳ";
        case'5'->"Ⅴ";
        case'6'->"Ⅵ";
        case'7'->"Ⅶ";
        case'8'->"Ⅷ";
        case'9'->"Ⅸ";
        default->"";
    };//注意此处有分号
    return str;
}

public static boolean checkString(String str){
    if(str.length()>9){
        return false;
    }
    for(int i=0;i<str.length();i++){
        char c=str.charAt(i);
        if(c<'0'||c>'9'){
            return false;
        }
    }
    return true;
}

2.旋转字符串

要求:给定两个字符串,A和B。A的旋转操作就是将A最左边的字符移动到最右边。例如

若A=”abcde“,在移动一次之后结果就是“bcdea”,如果在若干次调整操作之后,A能变回B,那么返回true,如果不能匹配成功,则返回false。

1.利用substring截取

public class Test{
    public static void main(String[] args){
        String strA="abcdef";
        String strB="bcdea";
        boolean result=check(strA,strB);
        System.out.println(result);
    }
}

public static boolean check(String strA,String strB){
    for(int i=0;i<strA.length();i++){
        strA=rotate(strA);
        if(strA.equals(strB)){
            return true;
        }
    }
    return false;
}

public static String rotate(String str){
    char first=str.charAt(0);
    String end=str.substring(1);
    return end+first;
}

2.将字符串变成字符数组

public class Test{
    public static void main(String[] args){
        String strA="abcdef";
        String strB="bcdea";
        boolean result=check(strA,strB);
        System.out.println(result);
    }
}

public static boolean check(String strA,String strB){
    for(int i=0;i<strA.length();i++){
        strA=rotate(strA);
        if(strA.equals(strB)){
            return true;
        }
    }
    return false;
}

public static String rotate(String str){
    char[] arr=str.toCharArray();
    char first=arr[0];
    for(int i=1;i<arr.length;i++){
        arr[i-1]=arr[i];
    }
    arr[arr.length-1]=first;
    String result=new String(arr);
    return result;
}

3.生成验证码

要求:可以是小写字母,也可以是大写字母,还可以是数字

           长度为5,内容中是4位字母,一位数字,其中数字只有一位,但是可以出现在仁义的位置

 将字符数组变化成字符串,可以用字符串类自带的构造方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值