输入和If语句

时间:2014-04-10 12:50:58

标签: java if-statement input

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

5 个答案:

答案 0 :(得分:2)

您需要考虑的事情很少:

  1. Op是字符串,因此您需要使用.equals("op").equalsIgnoreCase("op")方法进行比较。
  2. 您收到的错误为not a statement,因为您需要使用;来终止语句,因此a-b不是您需要执行的语句,就像我在使用以下代码一样。
  3. 最后您使用'*'
  4. 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==。但是,将CharString进行交换也不会对您有所帮助。要比较两个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)

您正在将Stringchar进行比较,以便

使用'-'更改"-"(对其他运营商也一样)并将其与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("*")

因为您正在使用==运算符来获取此错误。