Java 输入和If语句
我正在尝试创建一个命令/控制台计算器程序,但是我被操作符的if语句卡住了 我知道这不是创建计算器程序的最简单(甚至不是正确的)方法,但我这样做是为了练习用户输出、输入、If语句和计算 我想运算符变量的类型应该是char,但是如果这样做,我就无法获得用户输入。以下代码有什么问题Java 输入和If语句,java,if-statement,input,Java,If Statement,Input,我正在尝试创建一个命令/控制台计算器程序,但是我被操作符的if语句卡住了 我知道这不是创建计算器程序的最简单(甚至不是正确的)方法,但我这样做是为了练习用户输出、输入、If语句和计算 我想运算符变量的类型应该是char,但是如果这样做,我就无法获得用户输入。以下代码有什么问题 package calculator; import static java.lang.System.in ; import java.util.Scanner; public class Calculator {
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语句。您正在将
字符串
与字符
进行比较,因此将
“-”
更改为“-”
(对其他运算符也执行相同操作),并将其作为Op.equals(“-”)
关于错误:不是一个语句
将结果分配给变量,如result=a-b
您应该通过以下方式执行字符串比较:
if(op.equals("*")
因为,您正在对字符串使用
=
运算符,您将收到此错误。您无法使用===比较两个字符串。==将比较对象,而不是字符串的内容。要比较字符串,请使用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;}
您不能通过=
比较字符串和字符。但是用字符串
交换字符
对你都没有帮助。要比较两个String
对象,必须使用string1.equals(string2)
有关这方面的更多信息,请参阅。
不幸的是,在这种特殊情况下,它会使代码变得不必要的复杂。我建议在此处使用开关箱语句:
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");
}
您需要考虑的事情很少:
Op
是字符串,因此需要使用.equals(“Op”)
或.equalsIgnoreCase(“Op”)
方法进行比较
您得到的错误是而不是语句
,因为您需要使用
终止该语句,因此a-b
不是您需要执行的语句,就像我在下面的代码中使用的那样
最后您要检查'*'
单个代码对字符的使用情况
您可以看到以下带有格式化语言的代码
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);
}
}
@sp00m实际上,我们可以在switch case中使用String(来自java7)@sp00m您尝试过这个吗?有关更多信息,请参阅。可能的副本谢谢您的输入。编辑了我的答案。你的答案不正确。在.equals()上使用==
不会导致编译器错误<代码>错误:没有一条语句是由于计算没有将结果存储到变量中而导致的(a*b
应该是result=a*b
或类似的内容)。
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);
}
}