Java 计算器 char 线程
Java Calculator char thread
这是我代码中的 void main。当我编译代码时它没有显示任何错误,但是当我键入任何随机字母时它会显示以下线程。
输出:
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;
}
请帮忙!
Scanner
class 不会按照您假设的方式标记您的输入。也就是说,numbers.nextDouble()
直到看起来像 Double
的第一位数据结束时才会读取。它读取 整行 ,并尝试将其解析为 Double
。您得到一个 InputMismatchException
,因为输入 (2323.10ffxcv
) 与预期的数据类型 (Double
) 不匹配。
您需要找到一种方法来自己标记字符串,或者简单地在其自己的行中输入每个值。即便如此,您输入的最后一部分 (ffxcv
) 仍然会破坏内容,因为它不能被解析为 Double
.
这是我代码中的 void main。当我编译代码时它没有显示任何错误,但是当我键入任何随机字母时它会显示以下线程。
输出:
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;
}
请帮忙!
Scanner
class 不会按照您假设的方式标记您的输入。也就是说,numbers.nextDouble()
直到看起来像 Double
的第一位数据结束时才会读取。它读取 整行 ,并尝试将其解析为 Double
。您得到一个 InputMismatchException
,因为输入 (2323.10ffxcv
) 与预期的数据类型 (Double
) 不匹配。
您需要找到一种方法来自己标记字符串,或者简单地在其自己的行中输入每个值。即便如此,您输入的最后一部分 (ffxcv
) 仍然会破坏内容,因为它不能被解析为 Double
.