1

我的教授为我提供了一堆方法来填写罗马数字程序(以加法格式,所以 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 会如何调用它。

我研究了其他罗马数字程序,但我似乎找不到任何使用在其他方法中调用的方法,例如我可以比较的方法。

任何建议表示赞赏!

4

3 回答 3

5

我假设 romanDigitChar 只返回一个字符来表示精确匹配的数字,例如 1、5、10、50、100 等。printRomanNumeral 会将已知值作为数字重复调用以将它们转换为字符。我建议使用两个嵌套循环,一个用于具有递减特定字符的数量,一个用于提取每个值。内部循环调用第二种方法。

我假设他/她需要 ASCII 字符,尽管罗马数字有特殊的 Unicode 字符。

于 2013-10-27T19:38:07.020 回答
1

对于初学者来说,romanDigitchar 返回一个 char(对应于作为输入给出的自然数的罗马数字)。printRomanNumeral 不返回任何内容,但应该打印罗马数字。

于 2013-10-27T19:41:42.557 回答
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.
        }

      }
于 2013-10-27T19:43:27.610 回答