Я преобразую римский цифровой ввод в его целочисленное значение. В моем методе convertChar я все время получаю сообщение об ошибке, что это недостижимый оператор всякий раз, когда я добавляю оператор break в код. Я не знаю, почему это так. Я новый студент, и я, должно быть, сделал что-то не так, и я надеялся, что кто-то может показать мне, что я сделал не так, и как исправить это. Это должно быть связано с тем, как я правильно подбираю методы? Я все еще путаюсь с тем, какие переменные вводятся, поэтому, возможно, я испортил их, но я недостаточно опытен, чтобы точно знать, что я сделал неправильно. Вот все, что у меня есть:Зачем мне эта ошибка «недостижимого утверждения»?
public class RomanNumeralConverter {
public int romanInput() {
return convert(getUserInput());
}
public String getUserInput() {
Scanner numberInput = new Scanner (System.in);
System.out.print("Enter a roman numeral in uppercase: ");
String userInput = numberInput.next();
numberInput.close();
return userInput;
}
public int convert (String userInput) {
int result = 0;
int subtractamount = 0;
int x = userInput.length();
while(x != 0) {
char romanConvert = userInput.charAt(x);
if(x >= 1) {
if(convertChar(romanConvert) >= convertChar(userInput.charAt(x - 1))) {
subtractamount += convertChar(userInput.charAt(x - 1));
}
}
result += convertChar(romanConvert);
x--;
}
result -= subtractamount;
return result;
}
public static char convertChar(char value) {
switch (value) {
case 'I':
return 1;
break;
case 'V':
return 5;
break;
case 'X':
return 10;
break;
case 'L':
return 50;
break;
case 'C':
return 100;
break;
case 'D':
return 500;
break;
case 'M':
return 1000;
break;
default:
System.out.println("Invalid character!");
return 0;
break;
}
return value;
}
public void printValue() {
System.out.println(romanInput());
}
public static void main(String[] args) {
new RomanNumeralConverter().printValue();
}
}
Оператор switch будет _allways_ возвращать значение, что означает, что 'return value' никогда не будет достигнуто. – August