Java 输入和If语句

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 {

我正在尝试创建一个命令/控制台计算器程序,但是我被操作符的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语句。

您正在将
字符串
字符
进行比较,因此

“-”
更改为
“-”
(对其他运算符也执行相同操作),并将其作为
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);
    
    }
    }