键盘录入一个字符串,将内容变成罗马数字
要求1:长度为小于等于9 要求2:只能是数字
下面是阿拉伯数字跟罗马数字的对比关系:
Ⅰ - 1、Ⅱ - 2、Ⅲ - 3、Ⅳ - 4、Ⅴ -5、Ⅵ- 6、Ⅶ- 7、Ⅷ- 8、Ⅸ - 9
注意点:罗马数字里面是没有0的,如果键盘录入的数字包含0,可以变成""(长度为0的字符串)
package Comprehensive;
import java.util.Scanner;
public class Test{
public static void main(String[] args) {
//1.键盘录入字符串
Scanner sc = new Scanner(System.in);
String str;
while (true) {
System.out.println("请输入一个只含数字的字符串:");
str = sc.next();
if (checkStr(str)){
break;
}else {
System.out.println("输入字符串不合格!");
}
}
//转换
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
String s = changeLuoMa(c);
sb.append(s);
}
//打印输出
System.out.println(sb);
}
//将数字变成罗马数字
public static String changeLuoMa(char number){
String str = switch(number){
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 checkStr(String str){
if (str.length() > 9){//长度大于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;
}
}