Нужна помощь в написании конвертера чисел в римскую цифру, используя только if, если еще и операторы switch
Вот код:
public String ToRoman(int number)
{
if ((number < 1 || (number > 3999)))
if (number >= 1000) return "M" + ToRoman(number - 1000);
if (number >= 900) return "CM" + ToRoman(number - 900);
if (number >= 500) return "D" + ToRoman(number - 500);
if (number >= 400) return "CD" + ToRoman(number - 400);
if (number >= 100) return "C" + ToRoman(number - 100);
if (number >= 90) return "XC" + ToRoman(number - 90);
if (number >= 50) return "L" + ToRoman(number - 50);
if (number >= 40) return "XL" + ToRoman(number - 40);
if (number >= 10) return "X" + ToRoman(number - 10);
if (number >= 9) return "IX" + ToRoman(number - 9);
if (number >= 5) return "V" + ToRoman(number - 5);
if (number >= 4) return "IV" + ToRoman(number - 4);
if (number >= 1) return "I" + ToRoman(number - 1);
Scanner myKeyboard = new Scanner (System.in);
System.out.println("Enter the integer: ");
number = myKeyboard.nextInt();
myKeyboard.close();
}
}
У меня проблема в том, что я получаю сообщение об ошибке "Метод должен возвращать строку типа результата".
1 ответ
Вам нужна вспомогательная функция:
public String ToRomanWrapper()
{
Scanner myKeyboard = new Scanner (System.in);
System.out.println("Enter the integer: ");
number = myKeyboard.nextInt();
myKeyboard.close();
return ToRoman(number);
}
public String ToRoman(int number){
if ((number < 1 || (number > 3999)))
return "INVALID"
if (number >= 1000) return "M" + ToRoman(number - 1000);
if (number >= 900) return "CM" + ToRoman(number - 900);
if (number >= 500) return "D" + ToRoman(number - 500);
if (number >= 400) return "CD" + ToRoman(number - 400);
if (number >= 100) return "C" + ToRoman(number - 100);
if (number >= 90) return "XC" + ToRoman(number - 90);
if (number >= 50) return "L" + ToRoman(number - 50);
if (number >= 40) return "XL" + ToRoman(number - 40);
if (number >= 10) return "X" + ToRoman(number - 10);
if (number >= 9) return "IX" + ToRoman(number - 9);
if (number >= 5) return "V" + ToRoman(number - 5);
if (number >= 4) return "IV" + ToRoman(number - 4);
if (number >= 1) return "I" + ToRoman(number - 1);
return "INVALID"
}
Кроме того, если вы не можете определить новые функции, вы можете сделать это в той же функции:
public String ToRoman(int number)
{
if ((number < 1 || (number > 3999)))
{
Scanner myKeyboard = new Scanner (System.in);
System.out.println("Enter the integer: ");
number = myKeyboard.nextInt();
myKeyboard.close();
return ToRoman(number);
}
else if (number >= 1000) return "M" + ToRoman(number - 1000);
else if (number >= 900) return "CM" + ToRoman(number - 900);
else if (number >= 500) return "D" + ToRoman(number - 500);
else if (number >= 400) return "CD" + ToRoman(number - 400);
else if (number >= 100) return "C" + ToRoman(number - 100);
else if (number >= 90) return "XC" + ToRoman(number - 90);
else if (number >= 50) return "L" + ToRoman(number - 50);
else if (number >= 40) return "XL" + ToRoman(number - 40);
else if (number >= 10) return "X" + ToRoman(number - 10);
else if (number >= 9) return "IX" + ToRoman(number - 9);
else if (number >= 5) return "V" + ToRoman(number - 5);
else if (number >= 4) return "IV" + ToRoman(number - 4);
else if (number >= 1) return "I" + ToRoman(number - 1);
}
Я не уверен, почему вы хотите сделать это, хотя. Чтение ввода в той же функции, которая обрабатывает ввод, было бы очень неприятно.