Я не понимаю, почему это не работает Исключение в потоке "основной" java .util.InputMismatchException - PullRequest
0 голосов
/ 21 марта 2020

Я только учусь кодировать, и это довольно сложно для меня, я не мог найти ответ на Inte rnet, поэтому я обратился сюда, я хотел сделать калькулятор для Java, я использую сканер , но я не могу этого сделать, и я не понимаю, что я делаю неправильно. Я буду рад, если вы не рассмеетесь и не поможете мне. Спасибо ..

   package com.company;

    import java.util.Scanner;

    public class Main {

        public static void main(String[] args) {
            int result = 0;
            Scanner num1 = new Scanner(System.in);
            System.out.println("Hola<Soy Calculadora> Etre primer numero : ");

            System.out.println("Tu primer numero es : " + num1);
            System.out.println("Entre Segundo numero aqui : " );
            Scanner num2 = new Scanner(System.in);
            System.out.println("Tu segundo numero es : " + num2);
            System.out.println(" Ahora elige que quieres hacer con los numeros " + num1 + " y " + num2 + " (para eligir solo tienes que introducir un simvolo p. ej. '+' )");
            Scanner act = new Scanner(System.in);
            int userInputnum1 = num1.nextInt();
            int userInputnum2 = num2.nextInt();
            String userInputact = act.nextLine();


            if(userInputact.equals("+")){
                result = userInputnum1 + userInputnum2;
            }else if(userInputact.equals("-")){
                result = userInputnum1 + userInputnum2;
            }else if(userInputact.equals("/")){
                result = userInputnum1/userInputnum2;
            }
            System.out.println("resultado :" + result);

        }
    }

выдает ошибку:

Exception in thread "main" java.util.InputMismatchException
    at java.base/java.util.Scanner.throwFor(Scanner.java:939)
    at java.base/java.util.Scanner.next(Scanner.java:1594)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
    at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
    at com.company.Main.main(Main.java:18)

подскажите пожалуйста как решить ..

1 Ответ

0 голосов
/ 21 марта 2020

вам нужен только один сканер:

Scanner scanner = new Scanner(System.in);
int a,b,r=0;
char c;
a = scanner.nextInt();
b = scanner.nextInt();
c = scanner.next().charAt(0);
switch (c) {
    case '+':
        r = a + b;
        break;
    /// more cases
    default: {
        System.out.println("default");
    }
}
System.out.println(r);

, чтобы избежать ошибок, вы должны использовать что-то вроде:

if (scanner.hasNextInt()) {
    a = scanner.nextInt();
}
...