Java калькулятор символьная нить - PullRequest
0 голосов
/ 12 февраля 2019

Это моя пустая основная часть в моем коде.Когда я компилирую код, он не показывает ошибок, но когда я набираю случайные буквы, он показывает следующий поток.

Вывод:

Please enter the equation :
2323.10ffxcv
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextDouble(Scanner.java:2413)
    at Calculator.main(calculator.java:31)

[Это вывод в CMD.] [1]

Код:

Calculator calc = new Calculator();
Scanner numbers = new Scanner(System.in);

System.out.println("Please enter the equation : ");

double a = numbers.nextDouble();
char sign = numbers.next().charAt(0);
double b = numbers.nextDouble();

switch (sign) {
case '+':
    calc.add(a, b);
    break;
case '-':
   calc.sub(a, b);
   break;
case '*':
    calc.multiply(a, b);
    break;
case '/':
    calc.divide(a, b);
    break;
default:
    System.out.println("Sorry I ( The program ) did not understand");

    while (sign != '+' || sign != '-' || sign != '*' || sign != '/') {
        switch (sign) {
        case '+':
            calc.add(a, b);
            break;
        case '-':
            calc.sub(a, b);
            break;
        case '*':
            calc.multiply(a, b);
            break;
        case '/':
            calc.divide(a, b);
            break;
        default:
            System.out.println("Sorry I ( The program ) did not understand");
            break;
        }
    }
    break;
}

Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 25 мая 2019

Вы можете использовать try catch

try {
     // Code
}
Catch ( exception e ) {
    // Code
}
0 голосов
/ 12 февраля 2019

Класс Scanner не будет маркировать ваш ввод так, как вы, похоже, предполагаете.То есть numbers.nextDouble() не читает до конца первого бита данных, который выглядит как Double.Он читает всю строку и пытается проанализировать ее как Double.Вы получаете InputMismatchException, потому что ввод (2323.10ffxcv) не соответствует ожидаемому типу данных (Double).

Вам нужно найти способ либо токенизировать строку самостоятельно, либо просто ввестикаждое значение в отдельной строке.Несмотря на это, последняя часть вашего ввода (ffxcv) все еще будет ломать вещи, потому что она не может быть проанализирована как Double.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...