package 字符串练习; import java.util.Scanner; import java.util.StringJoiner; public class 转换罗马数字 { public static void main(String[] args) { /* 题目: 录入一个字符串 要求: 1. 长度小于等于9 2. 只能是数字 目的:将内容变成罗马数字 数字: 0 1 2 3 4 5 6 7 8 9 罗马: "" I II III IV V VI VII VIII IX 罗马数字里没有0,所以0当作""(空字符串) */ //思路: 1. 录入字符串 // 2. 判断长度,和是否为数字 // 3. 创建罗马数字数组 // 4. 用数字对应数组索引 // 5. 打印 Scanner sc = new Scanner(System.in); String Arabic_numbers = sc.next(); while (true) { if(Arabic_numbers.length() > 9){ System.out.println("长度超过限制,请重新读入:"); Arabic_numbers = sc.next(); } else if(isnumbers(Arabic_numbers) == false){ System.out.println("不是数字形式,请重新输入:"); Arabic_numbers = sc.next(); } else{ System.out.println("录入完毕"); break; } } //判断.录入完毕 String Roman_numerals[] = {"" , "I", "II","III","IV","V","VI","VII", "VIII","IX"}; StringJoiner result = new StringJoiner(","); for (int i = 0; i < Arabic_numbers.length(); i++) { result.add(Roman_numerals[Integer.parseInt(Arabic_numbers.substring(i,i+1))]); } System.out.println(result); } //这就是第二种写法(简单点) public static boolean isnumbers(String Arabic_numbers ){ for (int i = 0; i < Arabic_numbers.length(); i++) { if(Arabic_numbers.charAt(i) < '0' || Arabic_numbers.charAt(i) > '9'){ return false; } } return true; } }