描述:
该程序通过用户输入一个数字字符串,将其转换为对应的罗马数字表示,并输出。程序首先通过Scanner类获取用户输入,然后使用check()函数验证输 入是否合法(长度不超过9且仅包含数字)。若输入合法,则使用StringBuilder类创建一个字符串拼接对象sb,通过循环遍历输入字符串的每个字符,将 其转换为对应的罗马数字并以空格分隔,最后输出。changLuoMa()函数用于将数字转换为罗马数字。该程序提供了两种实现方法:方法一使用数组映射,方法二使用switch语句。
package StringBuilder;
import java.util.Scanner;
public class Demo5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字:");
String str;
while (true) {
str = sc.next();
if (check(str)) {
break;
} else {
System.out.println("输入有误,请重新输入......");
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
sb.append(changLuoMa(str.charAt(i) - 48)).append(" ");
}
System.out.println(sb);
}
//方法一
// public static String changLuoMa(int number){
// String[] arr = {"","I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
// return arr[number];
// }
//方法二
public static String changLuoMa(int number) {
String s = "";
switch (number) {
case 0 -> s = "";
case 1 -> s = "I";
case 2 -> s = "II";
case 3 -> s = "III";
case 4 -> s = "IV";
case 5 -> s = "V";
case 6 -> s = "VI";
case 7 -> s = "VII";
case 8 -> s = "VIII";
case 9 -> s = "IX";
default -> s = "";
}
return s;
}
//当某个变量需要满足多个条件时,可使用如下方式进行判断
public static boolean check(String str) {
if (str.length() > 9) {
return false;
}
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) < '0' || str.charAt(i) > '9') {
return false;
}
}
return true;
}
}