Как и зачем реализовывать статический метод intValue - римское преобразование цифр
Я сообщаю вам вопрос моего учителя:
Реализуйте метод статической утилиты intValue и повторно используйте код, который вы используете в методе экземпляра.
// TODO implement this
public static int intValue(String roman) {
return 0;
}
Я не понимаю лучше, почему мне нужно использовать статический метод и почему мне нужно повторно использовать код, что я думаю, что это так:
public int intValue () {
int decimal = 0;
int lastNumber = 0;
number = number.toUpperCase();
for (int x = number.length() - 1; x >= 0; x--) {
char convertNumber = number.charAt(x);
switch (convertNumber) {
case 'M':
decimal = processDecimal(1000, lastNumber, decimal);
lastNumber = 1000;
break;
case 'D':
decimal = processDecimal(500, lastNumber, decimal);
lastNumber = 500;
break;
case 'C':
decimal = processDecimal(100, lastNumber, decimal);
lastNumber = 100;
break;
case 'L':
decimal = processDecimal(50, lastNumber, decimal);
lastNumber = 50;
break;
case 'X':
decimal = processDecimal(10, lastNumber, decimal);
lastNumber = 10;
break;
case 'V':
decimal = processDecimal(5, lastNumber, decimal);
lastNumber = 5;
break;
case 'I':
decimal = processDecimal(1, lastNumber, decimal);
lastNumber = 1;
break;
}
}
return decimal;
Может ли кто-нибудь объяснить мне? Спасибо
2 ответа
Ваш учитель хочет, чтобы вы удалили строку return 0;
и напишите, каким должно быть тело метода:
public static int intValue(String roman) {
//write code here that returns an int based on a Roman numeral String like "MVCXIII"
}
Мне очень жаль, если я допустил ошибки при правильной работе сайта.
Я переместил весь метод реализации public int intValue() в приватную статическую int int intValue(String roman) и реорганизовал метод public int intValue(). Я думаю, что это может быть средством запроса моего учителя; предварительное решение заключается в следующем:
public static int intValue (String roman){
int decimal = 0;
int lastNumber = 0;
roman = roman.toUpperCase();
for (int x = roman.length() - 1; x >= 0; x--) {
char convertNumber = roman.charAt(x);
switch (convertNumber) {
case 'M':
decimal = processDecimal(1000, lastNumber, decimal);
lastNumber = 1000;
break;
case 'D':
decimal = processDecimal(500, lastNumber, decimal);
lastNumber = 500;
break;
case 'C':
decimal = processDecimal(100, lastNumber, decimal);
lastNumber = 100;
break;
case 'L':
decimal = processDecimal(50, lastNumber, decimal);
lastNumber = 50;
break;
case 'X':
decimal = processDecimal(10, lastNumber, decimal);
lastNumber = 10;
break;
case 'V':
decimal = processDecimal(5, lastNumber, decimal);
lastNumber = 5;
break;
case 'I':
decimal = processDecimal(1, lastNumber, decimal);
lastNumber = 1;
break;
}
}
return decimal;
}
public int intValue() {
int rn = this.intValue();
return rn;
}