3

我收到此错误;二元运算符'-'的错误操作数类型所有其他操作都有效......当我通过 // 和 /* */ 等注释省略减法时;有人可以帮忙吗?

顺便说一下,这是代码;例外是在减法线上。

public class Calculator {

/*
 *use 'javac Calculator.java' to compile; 
 *use 'jar cvf Calculator.jar Calculator.class' for jar;
 *use 'java Calculator' to run;
 */
public static void main(String []args) {

String NewName

Scanner user_input = new Scanner( System.in );
System.out.println("Type your name please.");
NewName = user_input.next();
System.out.println("");

System.out.println("Hello " + NewName + ".");
System.out.println("I am Hunter's java calculator program.");
System.out.println("");

//mathematical input

String operator;
float cal1, cal2;

System.out.println("Type a Number...");
cal1 = user_input.nextFloat();
System.out.println("");

System.out.println("Type another Number...");
cal2 = user_input.nextFloat();
System.out.println("");

Scanner opt = new Scanner(System.in);
System.out.println("Enter an operator");
    operator = opt.next();

//operation decisions

    if (operator.equals("+")){
        System.out.println("The answer is " + cal1+cal2 + ".");
        }
    if  (operator.equals("-")){
        System.out.println("The answer is " + cal1-cal2 + ".");
        }

    if (operator.equals("/")){
        System.out.println("The answer is " + cal1/cal2 + ".");
        }
    if (operator.equals("*")){
        System.out.println("The answer is " + cal1*cal2 + ".");
        }

}
}
4

1 回答 1

6

你需要括号:

System.out.println("The answer is " + (cal1-cal2) + ".");

否则你所拥有的将被视为

System.out.println(("The answer is " + cal1) - (cal2 + "."));

这是无效的,因为您不能减去字符串。


为什么其他运营商没有错误?好吧,*并且/具有更高的优先级,因此它们按预期工作。+,另一方面,被重载以连接字符串:

System.out.println("The answer is " + cal1+cal2 + "."); // concatenates, doesn't add

例如,如果call1is1call2is 2,结果将是:

答案是 12。

这不是你想要的。同样,这可以用括号解决。

于 2014-03-22T20:33:41.633 回答