Java实现阿拉伯数字转罗马数字代码问题及修正方案
阿拉伯数字转罗马数字的Java实现及修正过程
我最近在为Java课程编写一个将阿拉伯数字转换为罗马数字的程序,经过调整后已经可以正常运行,下面是完整的可运行代码:
import java.util.Scanner; public class RomanDigit { public static void main(String arg[]) { System.out.println("Please enter a number to be converted to roman numerals: "); Scanner scan = new Scanner(System.in); int number = scan.nextInt(); if (number < 0 || number > 3999) { System.out.println("This number cannot be converted"); } else { System.out.println("The number you input, converted into roman numerals is: " + convert(number)); } } public static String romanDigit(int n, String one, String five, String ten) { if (n >= 1) { if (n == 1) { return one; } else if (n == 2) { return one + one; } else if (n == 3) { return one + one + one; } else if (n == 4) { return one + five; } else if (n == 5) { return five; } else if (n == 6) { return five + one; } else if (n == 7) { return five + one + one; } else if (n == 8) { return five + one + one + one; } else if (n == 9) { return one + ten; } } return ""; } public static String convert(int number) { String romanOnes = romanDigit(number % 10, "I", "V", "X"); number /= 10; String romanTens = romanDigit(number % 10, "X", "L", "C"); number /= 10; String romanHundreds = romanDigit(number % 10, "C", "D", "M"); number /= 10; String romanThousands = romanDigit(number % 10, "M", "", ""); return romanThousands + romanHundreds + romanTens + romanOnes; } }
修正说明
最初编写代码时遇到了两个问题,导致程序无法正常输出正确结果:
- 遗漏了
number /=10;语句:这会导致处理每一位数字时没有正确对原数进行移位,无法依次提取十位、百位和千位的数字进行转换 - 原代码中输出逻辑有误:最初错误地输出了空的
romanDigit变量,同时if语句的位置安排不合理,后来调整为直接调用convert()方法输出转换结果
修正这两个问题后,程序就可以正确处理0到3999范围内的数字转换了。
内容的提问来源于stack exchange,提问作者Miguel
相关产品推荐
相关产品推荐

