Я занимаюсь курсом AP Computer Science, и у меня проблема с этим кодом. Мы должны сделать метод , который преобразует строки римской цифры в десятичные значения.Java Beginner - римские цифры до десятичных разрядов БЕЗ переключателя
До сих пор мы только получали инструкции if/else и while. Я видел несколько ответов здесь, используя переключатель, но наш класс еще не дошел. Мне нужен способ сделать это без использования переключателя. Я написал только код, предполагающий, что римские цифры находятся в невозрастающем порядке, но всякий раз, когда используется строка типа «ММ», метод возвращает «0» в качестве значения. Кто-нибудь знает, почему это происходит здесь?
Любые советы по вычитанию цифр также будут оценены.
public int decimalValue (String roman){
//given a Roman Numeral
int decimal =0;
int a = 0; // a and b used as to check each letter in String roman
int b = 1;
// Assuming in non-ascending order. Need to make for ascending
while ((a <= (roman.length() - 1)) && (b <= roman.length())) {
if (roman.substring(0,1) == "M") {
decimal = decimal + 1000;
}
else if (roman.substring(0,1) == "D") {
decimal = decimal + 500;
}
else if (roman.substring(0,1) == "C") {
decimal = decimal + 100;
}
else if (roman.substring(0,1) == "L") {
decimal = decimal + 50;
}
else if (roman.substring(0,1) == "X") {
decimal = decimal + 10;
}
else if (roman.substring(0,1) == "V") {
decimal = decimal + 5;
}
else if (roman.substring(0,1) == "I") {
decimal = decimal + 1;
}
a++;
b++;
}
return decimal;
}
Не сравнить содержимое 'Strings' с помощью' '==. Вместо этого используйте 'equals()'. –
Ваш учитель не позволит вам использовать «переключатель»? Вам должно быть позволено сделать ваш код более приятным: p – keyser
Переключатель хорош! Мы учили коммутатору до того, как и где: –