练习1  转换罗马数字

package com.lkbhua.Test;

import java.util.Scanner;

public class test09 {
    public static void main(String[] args) {
        /*  转换为罗马数字
         *  要求:长度不能超过9
         *       只能是数字
         *   1-3: I, II, III 罗马数字是没有0,0用“ ”替代* */

        Scanner sc = new Scanner(System.in);
        String str;
        while( true){
            // 1、键盘录入一个字符串
            System.out.println("请输入一个数字字符串:");
            str = sc.next();

            // 2、校验输入的字符串
            boolean flag = checkStr( 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);
            System.out.println(c);
            // 转换字符串为数字
            int number = c - 48;
            String s = change( number);
            System.out.print(s);

            // 字符串拼接
            sb.append(s);
        }
        System.out.println(sb.toString());


    }


    // 转换方法
    public static String change(int number){
         // 定义一个数组,让索引跟罗马数字形成对应关系
        String[] romans = {" ", "Ⅰ", "Ⅱ", "Ⅲ", "Ⅳ", "Ⅴ", "Ⅵ", "Ⅶ", "Ⅷ", "Ⅸ"};
        return romans[number];
    }


    // 校验方法
    public static boolean checkStr(String str){
        // 长度
        if(str.length() > 9){
            System.out.println("长度不能超过9");
            return false;
        }
        // 只能是数字
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i); // 得到每一个字符
            if(!(c >= '0' && c <= '9')){
                System.out.println("只能是数字");
                return false;
            }
        }
        return true;
    }
}

练习2  调整字符串

 

package com.lkbhua.Test;

import java.util.Scanner;

public class test10case1 {
    public static void main(String[] args) {
        /*  调整字符串
         *  给定两个字符串A和B,旋转就是将A最左边的字符移动到最右边。
         *  比如A=abcde,B=cdeab,旋转之后A变为cdeab,B变为abcde。
         *  要求判断A是否可以通过旋转得到B。* */

        // 1、定义两个字符串
        Scanner sc =new Scanner(System.in);
        System.out.println("请输入第一个字符串:");
        String strA = sc.next();
        System.out.println("请输入第二个字符串:");
        String strB = sc.next();

        // 2、旋转字符串
        strA = rotate(strA);
        System.out.println("旋转后的字符串为:"+strA);

        // 循环旋转并比较
        boolean flag = check(strA,strB);
        System.out.println("两个字符串是否可以通过旋转得到:"+flag);

    }
    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){
        // 套路:
        // 如果我们看到要修改字符串中的内容
        // case1:用subString进行截取,把左边的截取出来拼接到有右边去
        // case2:把字符串先变成一个数组,然后进行操作,最后再变成字符串

        // case1:
        // 获取最左边的字符
        char first = str.charAt(0);
        // 剩余字符
        String end = str.substring(1);
        return end + first;
    }

}

声明:

以上均来源于B站@ITheima的教学内容!!!

本人跟着视频内容学习,整理知识引用

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐