JavaSE——String罗马数字替换

第一种:用查表法
package com.zhao.stringtest;

import java.util.Scanner;

public class Test8Case1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String str;
        //Ctrl+Alt+T 快速构建while循环包裹
        while (true) {
            System.out.println("请输入一个字符串:");
            str=sc.next();

            //校验
            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);
            //Ascii码表 得到的char类型减去表示'0'的48得到int类型的数字
            int number=c-48;
            //拿到每一个数字所对应的罗马字符,并进行拼接
            String s=replaceStr(number);
            sb.append(s);
        }
        String newStr=sb.toString();
        System.out.println(newStr);

    }

    //编写校验方法
    public static boolean checkStr(String string){
        //1.长度小于等于9
        if (string.length()>9){
            return false;
        }
        //2.只能是数字
        for (int i = 0; i < string.length(); i++) {
            char c=string.charAt(i);
            //char类型在进行比较时会自动提升为int类型
            if (c<'0'||c>'9'){
                return false;
            }
        }
        //只有当所有字符全部判断完毕后,才能返回true
        return true;
    }

    //编写替换方法
    //查表法
    public static String replaceStr(int number){
        //因为只有数字,所以可以获取每一位数字来返回对应索引的罗马数字
        String[] strs={"","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ"};
        return strs[number];
    }
}
第二种:用Switch匹配替换
package com.zhao.stringtest;

import java.util.Scanner;

public class Test8Case2 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String str;
        //Ctrl+Alt+T 快速构建while循环包裹
        while (true) {
            System.out.println("请输入一个字符串:");
            str=sc.next();

            //校验
            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);
            String s=replaceStr(c);
            sb.append(s);
        }
        String newStr=sb.toString();
        System.out.println(newStr);

    }

    //编写校验方法
    public static boolean checkStr(String string){
        //1.长度小于等于9
        if (string.length()>9){
            return false;
        }
        //2.只能是数字
        for (int i = 0; i < string.length(); i++) {
            char c=string.charAt(i);
            //char类型在进行比较时会自动提升为int类型
            if (c<'0'||c>'9'){
                return false;
            }
        }
        //只有当所有字符全部判断完毕后,才能返回true
        return true;
    }

    //编写替换方法
    //switch匹配
    public static String replaceStr(int number){
        String str;
        switch (number){
            case '0' :
                str="";
                break;
            case '1' :
                str="Ⅰ";
                break;
            case '2' :
                str="Ⅱ";
                break;
            case '3' :
                str="Ⅲ";
                break;
            case '4' :
                str="Ⅳ";
                break;
            case '5' :
                str="Ⅴ";
                break;
            case '6' :
                str="Ⅵ";
                break;
            case '7' :
                str="Ⅶ";
                break;
            case '8' :
                str="Ⅷ";
                break;
            case '9' :
                str="Ⅸ";
                break;
            default:
                str="";
                break;
        }
        return str;
    }
}
 
 
posted @ 2023-03-05 01:26  SuzukiHane  阅读(54)  评论(0)    收藏  举报