2013-10-27 3 views
1

Мой проф предоставил мне кучу методов для заполнения римской цифровой программы (в дополнительном формате, поэтому 4 = IIII, 9 = VIIII и т. Д.)В чем разница между этими двумя методами? JAVA

У меня возникли проблемы с пониманием того, что разница находится между этими двумя методами:

** 
    * 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 собирается позвонить ему.

Я изучил другие программы с числовыми числами, но я не могу найти какие-либо методы использования, называемые в рамках других методов, подобных этому, с которым я мог бы сравнить его.

Любые советы приветствуются!

+1

Этом вопрос кажется более уместным спросить вашего профессора. – nhgrif

+1

Верно, но я хочу сейчас поработать над этим, и это воскресенье. – coinbird

ответ

5

Я предполагаю, что romanDigitChar возвращает один символ для точного соответствия чисел, например. 1, 5, 10, 50, 100 и т. Д. printRomanNumeral будет вызывать это повторно для известных значений как чисел, чтобы превратить их в символы. Я предлагаю два вложенных цикла, один для сумм с конкретными символами в уменьшающемся значении и один из которых извлекает каждое значение. Внутренний цикл вызывает второй метод.

Я предполагаю, что он/она ожидает символов ASCII, хотя есть специальные символы Unicode для римских цифр.

+0

Итак, для romanDigitChar я мог бы сделать что-то вроде: if (val <5) {someString = someString + I} и т. Д.? – coinbird

+0

Нет, потому что тогда тип возврата либо не был бы символом (это была бы строка), либо было бы бессмысленно, потому что someString была бы глобальной переменной. Идея состоит в том, что вы возвращаете символ каждый раз, а не то, что вы спрашивали меня. –

+0

@CoinBird romainDigitChar возвращает один символ римской цифры. –

1

Ну, для начала, romanDigitchar возвращает символ (римская цифра, соответствующая натуральному числу, указанному как вход). printRomanNumeral ничего не возвращает, но должен напечатать римскую цифру.

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. 
     } 

     } 
+0

romanDigitChar говорит: «Этот метод не может выполнять арифметические операции. ' –

+0

Нет ни одного символа, который представляет значение 4, и не существует значения для значения 9 ... –

+0

@GermannArlington Я дал ему подсказку. Как вы думаете, будет хорошей идеей, если я дам ему точный ответ, так как это задание. – MinGW

Смежные вопросы