我的教授为我提供了一系列方法来填写罗马数字程序(加法格式,所以4 = IIII,9 = VIIII等)
我无法理解这两种方法之间的区别:
**
* This method prints, to the standard output and in purely additive
* notation, the Roman numeral corresponding to a natural number.
* If the input value is 0, nothing is printed. This
* method must call the method romanDigitChar().
* @param val ?
*/
public void printRomanNumeral(int val)
{
}
**
* This method returns the Roman numeral digit corresponding
* to an integer value. You must use a nested-if statement.
* This method cannot perform any arithmetic operations.
* @param val ?
* @return ?
*/
public char romanDigitChar(int val)
{
}
romanDigitChar是否应该逐位读取一个数字,并且一次只返回一位数?如果是这样,我不明白printRomanNumeral将如何调用它。
我研究过其他罗马数字程序,但我似乎找不到任何使用其他方法调用的方法,比如我可以将它与之比较。
感谢任何建议!
答案 0 :(得分:5)
我假设romanDigitChar为完全匹配的数字返回一个字符,例如仅限1,5,10,50,100等。 printRomanNumeral会重复调用此值作为数字将已知值转换为字符。我建议使用两个嵌套循环,一个用于具有递减值的特定字符的金额,一个用于提取每个值。内部循环调用第二种方法。
我认为他/她需要ASCII字符,尽管罗马数字有特殊的Unicode字符。
答案 1 :(得分:1)
对于初学者来说,romanDigitchar返回一个char(对应于作为输入给出的自然数的Roman Numeral)。 printRomanNumeral不返回任何内容,但应该打印罗马数字。
答案 2 :(得分:0)
Is romanDigitChar supposed to read a number digit by digit, and only return one digit at a time?
是的,例如,如果你想打印两个罗马数字数字:IIII,VIIII。在你的
void printRomanNumeral(int val)
方法,您需要这样做:
public void printRomanNumeral(int val)
{
System.out.println(romanDigitChar(4));
System.out.println(romanDigitChar(9));
}
但是在您的char romanDigitChar(int val)
方法中,您需要使用某种算法将自然数转换为罗马数字,例如:
public char romanDigitChar(int val)
{
if(val == 4) {
//Return a roman digit 4.
}
if(val == 9) {
//Return a roman digit 9.
}
}