Это задание, которое я должен выполнить.
Может ли кто-нибудь вести меня в правильном направлении?
Программа компилируется, но работает некорректно.
Ошибка является исключением InputMissmatch.
Это задание, которое я должен выполнить.
Может ли кто-нибудь вести меня в правильном направлении?
Программа компилируется, но работает некорректно.
Ошибка является исключением InputMissmatch.
Ваша проблема в том, что вы вводите букву в поле с плавающей запятой. В вашей программе вы просите пользователя ввести поплавок:
A = hope.nextFloat();
Но если вы введете букву «А», вы получите исключение, потому что «А» — это не число с плавающей запятой, а строка.
Более простой способ решить вашу проблему - вместо того, чтобы иметь все поля выбора, вы просто читаете ввод, который пользователь вводит со сканера, например:
String choice = hope.next();
Затем в операторе if вы проверяете, равно ли значение из строки выбора определенной букве, например
if (choice.equals("A")) {
number4 = (number1 + number2 + number3);
System.out.printf("Your results are:" + (number4));
}
И вы можете сделать то же самое для других вариантов, которые у вас есть.
Ошибка, которую вы получаете, означает, что вы пытаетесь использовать какие-то данные в качестве других, в вашем случае вы, вероятно, пытаетесь использовать String в качестве числа с плавающей запятой.
При использовании любого из методов next в классе Scanner вы должны сначала убедиться, что пользователь вводит соответствующие данные.
Для этого вам нужно использовать методы has.
Ваша проблема в том, что вы не проверяете, является ли ввод правильным поплавком или нет, прежде чем использовать ваш Scanner.nextFloat();
Вы должны сделать что-то вроде этого:
if (hope.hasNextFloat())
{
// Code to execute when you have a proper float,
// which you can retrieve with hope.nextFloat()
}
else
{
// Code to execute when the user input is not a float
// Here you should treat it properly, maybe asking for new input
}
Этого должно быть достаточно, чтобы указать вам правильное направление.
Кроме того, дополнительные сведения см. в документации API Scanner. Детали.
ИЗМЕНИТЬ
Кроме того, вы просите пользователя ввести символы (или строки): «A», «B» и т. д., но пытаетесь сравнить их с числом с плавающей запятой. Это неправильно, вы должны сравнить их со строкой или символом, например:
if (hope.hasNextString())
{
if (hope.nextString().equals("A"))
{
// Code for option "A"
}
else if (hope.nextString().equals("B"))
{
// Code for option "B"
}
else ...
}
Вы могли бы использовать переключатель там, но, похоже, вы еще не очень знакомы с java, поэтому я оставлю это на другой раз.