运行 使用此基本计算器时收到错误消息
Getting error message while running this basic calculator
我是 Java 的新手(实际上只做了大约 3 天)。我对 Python 有基本的了解,因此决定学习 Java。我今天在 Java 中制作了我的第一个计算器程序,并使用了与我在 Python 中的程序相同的程序设置。问题是,每次我 运行 它时我都会收到一条错误消息,特别是当它询问我想在第 16 行使用什么标志时。我知道这很基本,我确定我的问题是这样愚蠢,但我只是习惯了语法和东西,所以我想知道我做错了什么。这是代码:
import java.util.Scanner;
class Experiment {
public static void main(String[] args){
double num1, num2, ans = 0;
String sign;
Scanner num = new Scanner(System.in);
System.out.print("Enter first number: ");
num1 = num.nextDouble();
System.out.print("+, -, x or /? ");
sign = num.nextLine();
System.out.print("Enter second number: ");
num2 = num.nextDouble();
if(sign == "+"){
System.out.print(num1);
System.out.print("+");
System.out.print(num2);
System.out.print("=");
System.out.print(num1 + num2);
}
if(sign == "-"){
System.out.print(num1);
System.out.print("=");
System.out.print(num2);
System.out.print("=");
System.out.print(num1 - num2);
}
if(sign == "x"){
System.out.print(num1);
System.out.print("x");
System.out.print(num2);
System.out.print("=");
System.out.print(num1 * num2);
}
if(sign == "/"){
System.out.print(num1);
System.out.print("/");
System.out.print(num2);
System.out.print("=");
System.out.print(num1 + num2);
} else {
System.out.print("That is not a valid input");
}
}
}
一些事情:
在第 13 行你想要
sign = num.next();
在 if
块中,您想对字符串使用 equals 方法,而不是等号运算符,即您想要 sign.equals("+")
而不是 sign == "+"
正如您将看到的那样,它们解析为不同的值。
此外,在您特定的一组 if
语句中,您想从 if
开始,然后接下来的 3 个 if 块应该是 else if
这是因为最终的 else
语句将始终触发,除非 sign.equals("/")
解析为真。最后的 else
语句仅与其正上方的 if
相关,与其他 if
语句无关。
import java.util.Scanner;
class Experiment {
public static void main(String[] args){
double num1, num2, ans = 0;
String sign;
Scanner num = new Scanner(System.in);
System.out.print("Enter first number: ");
num1 = num.nextDouble();
System.out.print("Enter +, -, x or /: ");
sign = num.next();
System.out.print("Enter second number: ");
num2 = num.nextDouble();
if(sign.equals("+")){
System.out.print(num1);
System.out.print(" + ");
System.out.print(num2);
System.out.print(" = ");
System.out.print(num1 + num2);
}
else if(sign.equals("-")){
System.out.print(num1);
System.out.print(" - ");
System.out.print(num2);
System.out.print(" = ");
System.out.print(num1 - num2);
}
else if(sign.equals("x")){
System.out.print(num1);
System.out.print(" x ");
System.out.print(num2);
System.out.print(" = ");
System.out.print(num1 * num2);
}
else if(sign.equals("/")){
System.out.print(num1);
System.out.print(" / ");
System.out.print(num2);
System.out.print(" = ");
if (num2 != 0.0)
System.out.print(num1 / num2);
else
System.out.print("Cannot divide by 0");
} else {
System.out.print("That is not a valid input");
}
}
}
在这里输入第一个数字后,用户将按回车键,因此您的符号 = num.nextLine()
将读取该输入,因此您必须使用 num.next()
。您的所有条件都应该在 if...else if...else
中,要比较您应该使用的字符串 sign.equals("+")
我是 Java 的新手(实际上只做了大约 3 天)。我对 Python 有基本的了解,因此决定学习 Java。我今天在 Java 中制作了我的第一个计算器程序,并使用了与我在 Python 中的程序相同的程序设置。问题是,每次我 运行 它时我都会收到一条错误消息,特别是当它询问我想在第 16 行使用什么标志时。我知道这很基本,我确定我的问题是这样愚蠢,但我只是习惯了语法和东西,所以我想知道我做错了什么。这是代码:
import java.util.Scanner;
class Experiment {
public static void main(String[] args){
double num1, num2, ans = 0;
String sign;
Scanner num = new Scanner(System.in);
System.out.print("Enter first number: ");
num1 = num.nextDouble();
System.out.print("+, -, x or /? ");
sign = num.nextLine();
System.out.print("Enter second number: ");
num2 = num.nextDouble();
if(sign == "+"){
System.out.print(num1);
System.out.print("+");
System.out.print(num2);
System.out.print("=");
System.out.print(num1 + num2);
}
if(sign == "-"){
System.out.print(num1);
System.out.print("=");
System.out.print(num2);
System.out.print("=");
System.out.print(num1 - num2);
}
if(sign == "x"){
System.out.print(num1);
System.out.print("x");
System.out.print(num2);
System.out.print("=");
System.out.print(num1 * num2);
}
if(sign == "/"){
System.out.print(num1);
System.out.print("/");
System.out.print(num2);
System.out.print("=");
System.out.print(num1 + num2);
} else {
System.out.print("That is not a valid input");
}
}
}
一些事情: 在第 13 行你想要
sign = num.next();
在 if
块中,您想对字符串使用 equals 方法,而不是等号运算符,即您想要 sign.equals("+")
而不是 sign == "+"
正如您将看到的那样,它们解析为不同的值。
此外,在您特定的一组 if
语句中,您想从 if
开始,然后接下来的 3 个 if 块应该是 else if
这是因为最终的 else
语句将始终触发,除非 sign.equals("/")
解析为真。最后的 else
语句仅与其正上方的 if
相关,与其他 if
语句无关。
import java.util.Scanner;
class Experiment {
public static void main(String[] args){
double num1, num2, ans = 0;
String sign;
Scanner num = new Scanner(System.in);
System.out.print("Enter first number: ");
num1 = num.nextDouble();
System.out.print("Enter +, -, x or /: ");
sign = num.next();
System.out.print("Enter second number: ");
num2 = num.nextDouble();
if(sign.equals("+")){
System.out.print(num1);
System.out.print(" + ");
System.out.print(num2);
System.out.print(" = ");
System.out.print(num1 + num2);
}
else if(sign.equals("-")){
System.out.print(num1);
System.out.print(" - ");
System.out.print(num2);
System.out.print(" = ");
System.out.print(num1 - num2);
}
else if(sign.equals("x")){
System.out.print(num1);
System.out.print(" x ");
System.out.print(num2);
System.out.print(" = ");
System.out.print(num1 * num2);
}
else if(sign.equals("/")){
System.out.print(num1);
System.out.print(" / ");
System.out.print(num2);
System.out.print(" = ");
if (num2 != 0.0)
System.out.print(num1 / num2);
else
System.out.print("Cannot divide by 0");
} else {
System.out.print("That is not a valid input");
}
}
}
在这里输入第一个数字后,用户将按回车键,因此您的符号 = num.nextLine()
将读取该输入,因此您必须使用 num.next()
。您的所有条件都应该在 if...else if...else
中,要比较您应该使用的字符串 sign.equals("+")