Помогите разобраться, я новичок. Ошибка:
Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:909) at java.util.Scanner.next(Scanner.java:1530) at java.util.Scanner.nextInt(Scanner.java:2160) at java.util.Scanner.nextInt(Scanner.java:2119) at kalkulator.main(kalkulator.java:36) "
Вот код:
import java.util.Scanner;
public class kalkulator {
public static void main (String[]args){
Scanner vod = new Scanner(System.in);
int cheslo1,cheslo2,rezultat;
String diya;
System.out.println("Введіть перше число:");
cheslo1 = (vod.nextInt());
System.out.println("Введіть друге число:");
cheslo2 =(vod.nextInt());
System.out.println("Виберіть дію +-/*");
diya =vod.nextLine();
if(diya.equals("+"))
{
rezultat =cheslo1+cheslo2;
}
else if(diya.equals("-"))
{
rezultat=cheslo1-cheslo2;
}
else if(diya.equals("/"))
{
rezultat=cheslo1*cheslo2;
}
else if(diya.equals("*"))
{
rezultat=cheslo1+cheslo2;
}
cheslo2 = (vod.nextInt());
rezultat=cheslo1 + cheslo2;
System.out.print("Результат:");
System.out.print(rezultat);
}
}
В общем ниже переделанный вариант с измененными названиями переменных не генерирует исключения:
public static void main(String[] args){
double val, val1, result;
String symbol;
try(Scanner scan= new Scanner(System.in)){
System.out.println("Введите первое число: ");
val = scan.nextDouble();
System.out.println("Введите второе число: ");
val1 = scan.nextDouble();
System.out.println("Введите знак: ");
symbol= scan.next();
}
switch (symbol){
case "/" : result = val / val1;
break;
case "*" : result = val * val1;
break;
case "+" : result = val + val1;
break;
case "-" : result = val - val1;
break;
default: result = -1;
break;
}
System.out.println(result);
}
Ошибка могла быть из-за того что:
import java.util.Scanner;
public class kalkulator {
public static void main(String[] args) {
Scanner vod = new Scanner(System.in);
double cheslo1, cheslo2, rezultat = 0;
String diya;
System.out.println("Введіть перше число:");
cheslo1 = (vod.nextDouble());
System.out.println("Введіть друге число:");
cheslo2 = (vod.nextDouble());
System.out.println("Виберіть дію +-/*");
// diya =vod.nextLine();
diya = vod.next();
if (diya.equals("+")) {
rezultat = cheslo1 + cheslo2;
} else if (diya.equals("-")) {
rezultat = cheslo1 - cheslo2;
} else if (diya.equals("/")) {
rezultat = cheslo1 / cheslo2;
} else if (diya.equals("*")) {
rezultat = cheslo1 * cheslo2;
}
//cheslo2 = (vod.nextInt());
// rezultat=cheslo1 + cheslo2;
System.out.print("Результат:" + rezultat);
}
}
Для чтения строки из потока ввода применяются методы next() или nextLine().
Используемые методы сканера:
next (); - считывает введённую строку до первого пробела
nextLine (); - считывает всю введённую строку
nextInt (); - считывает введённое число int
nextDouble (); - считывает введённое число double
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Например, имеем строку "кровоточивость", и нужно узнать индекс каждой буквы "о",как это сделать,не переводя строку в массив?
Имеется класс BloodCell в очень большой и длинной иерархии классов общего назначенияВажно: все классы по своему определяют toString()
Как из springfox-swagger2 получить yml файл с описанием rest api?
Есть вот такая функция, которая вызывается в главном методе, нужно чтобы она записывала в конец существующего файла некоторый текст, но она...