【发布时间】:2021-11-10 01:30:57
【问题描述】:
我结合了我在这里看到的几种不同的方法。有谁知道如何解决我遇到的这个问题?当您使用此代码时,它要求您输入数学运算符,但是当我输入 +9 或 -% 时,它仍然可以工作并使用第一个符号。如果有人输入 */ 而不是 *.我什至尝试将 case 切换为数字(即 case 1:),如果我将加法设置为 1,它会做同样的事情,如果我输入 15,它会读取一个并做加法。有什么想法吗?
import java.util.Scanner;
public class javacalculator {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Scanner operation = new Scanner(System.in);
double num1, num2, answer;
char userOperation;
System.out.print("Enter your full name: ");
String userName = input.nextLine();
System.out.println("+ Addition");
System.out.println("- Subtraction");
System.out.println("* Multiplication");
System.out.println("/ Division");
System.out.println("% Modulus");
System.out.println("\n");
System.out.print("Enter mathematical operator e.g. + for Addition: ");
userOperation = operation.next().charAt(0);
boolean invalidOperator = false;
switch (userOperation) {
case '+':
System.out.print("Enter first number: ");
num1 = input.nextInt();
System.out.print("Enter the second number: ");
num2 = input.nextInt();
answer = num1 + num2;
System.out.print(num1 + " + " + num2 + " = " + answer);
break;
case '-':
System.out.print("Enter first number: ");
num1 = input.nextInt();
System.out.print("Enter the second number: ");
num2 = input.nextInt();
answer = num1 - num2;
System.out.print(num1 + " - " + num2 + " = " + answer);
break;
case '*':
System.out.print("Enter first number: ");
num1 = input.nextInt();
System.out.print("Enter the second number: ");
num2 = input.nextInt();
answer = num1 * num2;
System.out.print(num1 + " * " + num2 + " = " + answer);
break;
case '/':
System.out.print("Enter first number: ");
num1 = input.nextInt();
System.out.print("Enter the second number: ");
num2 = input.nextInt();
answer = num1 / num2;
System.out.print(num1 + " / " + num2 + " = " + answer);
break;
case '%':
System.out.print("Enter first number: ");
num1 = input.nextInt();
System.out.print("Enter the second number: ");
num2 = input.nextInt();
answer = num1 % num2;
System.out.print(num1 + " % " + num2 + " = " + answer);
break;
default:
System.out.println("Invalid operator!");
break;
}
}
}
【问题讨论】:
-
看看
userOperation = operation.next().charAt(0);这一行——它在做什么? -
删除
.charAt(0),只使用userOperation = operation.next();,然后你的默认情况将运行并打印Invalid operator!,因为其他开关情况都不匹配。 -
按照sorifiend的想法,您还需要在每个
case行中将'更改为"。
标签: java performance math switch-statement calculator