我正在尝试创建一个命令/控制台计算器程序,但我遇到了运算符的if语句。
我知道这不是创建计算器程序最简单(甚至是正确)的方法,但我这样做是因为我可以练习用户输出,输入,If语句和计算。
我在想,对于操作符变量,它将是char类型,但如果我这样做,我就无法获得用户输入。以下代码有什么问题?
package calculator;
import static java.lang.System.in ;
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println ("Welcome to the calculator!");
System.out.print ("Enter a calculation: ");
int a;
int b;
String Op; //Operator
a = in.nextInt();
b = in.nextInt();
Op = in.next();
if (Op == '*') { a*b ;}
if (Op =='/') { a/b ;}
if (Op == '+') {a+b;}
if (Op == '-') {a-b;}
}
}
我还没有完成它(因为你可以看到没有任何输出),但那是因为我无法使if语句起作用。
我得到的错误是:
error: not a statement
if (Op == '-') {a-b;}
这适用于每个if语句。
答案 0 :(得分:2)
您需要考虑的事情很少:
Op
是字符串,因此您需要使用.equals("op")
或.equalsIgnoreCase("op")
方法进行比较。not a statement
,因为您需要使用;
来终止语句,因此a-b
不是您需要执行的语句,就像我在使用以下代码一样。'*'
char
单个代码用途进行检查
醇>
您可以使用格式化语言查看以下代码。
public class Calculator {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Welcome to the calculator!");
int a;
int b;
String Op; //Operator
int c = 0;
System.out.println("Enter First Value :");
a = in.nextInt();
System.out.println("Enter Second Value :");
b = in.nextInt();
System.out.println("Enter Operator :");
Op = in.next();
if (Op.equals("*")) {
c = a * b;
} else if (Op.equals("/")) {
c = a / b;
} else if (Op.equals("+")) {
c = a + b;
} else if (Op.equals("-")) {
c = a - b;
}
System.out.println("Output is " + c);
}
}
答案 1 :(得分:1)
if (Op == '*') { a*b ;}
if (Op =='/') { a/b ;}
if (Op == '+') {a+b;}
if (Op == '-') {a-b;}
您无法通过String
比较char
和==
。但是,将Char
与String
进行交换也不会对您有所帮助。要比较两个String
对象,您必须使用string1.equals(string2)
。
有关详细信息,请参阅How do I compare Strings in Java。
不幸的是,在这种特殊情况下,它不会使代码复杂化。我建议在这里使用 switch-case 语句:
switch (Op) {
case "*" :
a *= b;
break;
case "/" :
a /= b;
break;
case "+" :
a += b;
break;
case "-" :
a -= b;
break;
default:
System.out.printf("Invalid operation entered!\n");
}
答案 2 :(得分:0)
您正在将String
与char
进行比较,以便
使用'-'
更改"-"
(对其他运营商也一样)并将其与Op.equals("-")
进行比较
和约error: not a statement
;
将结果分配给变量,如
result = a-b
答案 3 :(得分:0)
您无法使用==比较两个字符串。 ==将比较对象,而不是字符串的内容。要比较字符串使用someString.equals(otherString);
。此外,它是String s = "someString";
而非String s = 'someString'
。
试试这个:
if (Op.equals("*")) { a*b ;}
if (Op.equals("/")) { a/b ;}
if (Op.equals("+")) {a+b;}
if (Op.equals("-")) {a-b;}
答案 4 :(得分:-3)
您应该以这种方式执行字符串比较:
if(op.equals("*")
因为您正在使用==
运算符来获取此错误。