2015-08-29 46 views
-1

这里是我的源代码:错误:错误的操作数类型的二进制运算符“ - ”

/* package whatever; // don't place package name! */ 

import java.util.*; 
import java.lang.*; 
import java.io.*; 

/* Name of the class has to be "Main" only if the class is public. */ 
class Ideone 
{ 
public static void main (String[] args) throws java.lang.Exception 
{ 
    System.out.println("Integer.MAX_VALUE = " + Integer.MAX_VALUE); 
    System.out.println("Integer.MAX_VALUE + 1 = " + (Integer.MAX_VALUE + 1)); 
    System.out.println("Integer.MAX_VALUE * 2 = " + (Integer.MAX_VALUE * 2)); 
    System.out.println("Integer.MAX_VALUE * 5 = " + (Integer.MAX_VALUE * 5)); 
    System.out.println("Integer.MAX_VALUE * 10 = " + ( Integer.MAX_VALUE * 10)); 
    System.out.println("Integer.MAX_VALUE = " + Integer.MAX_VALUE); 
    System.out.println("Integer.MIN_VALUE - 1 = " + (Integer.MIN_VALUE - 1)); 
    System.out.println("Integer.MIN_VALUE * 2 = " + (Integer.MIN_VALUE * 2)); 
    System.out.println("Integer.MIN_VALUE * 5 = " + (Integer.MIN_VALUE * 5)); 
    System.out.println("Integer.MIN_VALUE * 10 = " + ( Integer.MIN_VALUE * 10)); 
    //Part 2 
    System.out.println("Integer.MAX_VALUE + 1.0 = " + (Integer.MAX_VALUE + 1.0)); 
    System.out.println("Integer.MAX_VALUE * 2.0 = " + (Integer.MAX_VALUE * 2.0)); 
    System.out.println("Integer.MAX_VALUE * 5.0 = " + (Integer.MAX_VALUE * 5.0)); 
    System.out.println("Integer.MAX_VALUE * 10.0 = " + ( Integer.MAX_VALUE * 10.0)); 
    System.out.println("Integer.MIN_VALUE - 1.0 = " + (Integer.MIN_VALUE - 1.0)); 
    System.out.println("Integer.MIN_VALUE * 2.0 = " + (Integer.MIN_VALUE * 2.0)); 
    System.out.println("Integer.MIN_VALUE * 5.0 = " + (Integer.MIN_VALUE * 5.0)); 
    System.out.println("Integer.MIN_VALUE * 10.0 = " + ( Integer.MIN_VALUE * 10.0)); 
    //Part 3 
    int a, b; 
    a = 1; 
    b = 2; 
    System.out.println("The ints a, b are " + a + ", " + b); 
    System.out.println("a + b is " + a + b); 
    System.out.println("a - b is " + a - b); 
    System.out.println("a * b is " + a * b); 
    System.out.println("a/b is " + a/b); 
    //Part 4 
    double aD, bD; 
    aD = 1.0; 
    bD = 2.0; 
    System.out.println("The doubles aD, bD are " + aD + ", " + bD ); 
    System.out.println("aD + bD is " + aD + bD); 
    System.out.println("aD - bD is " + aD - bD); 
    System.out.println("aD * bD is " + aD * bD); 
    System.out.println("aD/bD is " + aD/bD); 
} 
} 

这里是我的错误:

Compilation error time: 0.1 memory: 320512 signal:0 
Main.java:37: error: bad operand types for binary operator '-' 
    System.out.println("a - b is " + a - b); 
             ^
first type: String 
second type: int 
Main.java:46: error: bad operand types for binary operator '-' 
    System.out.println("aD - bD is " +aD - bD); 
             ^
first type: String 
second type: double 
2 errors 

我是新来的Java,我仍然搞清楚算术。我以为我做得很好,但我不明白出了什么问题。这很可能是一个真正的菜鸟错误,但你能告诉我我做错了什么吗?

回答

3
"a - b is " + (a) - (b)` 

指:

("a - b is " + (a)) - (b) 

。左边部分(("a - b is " + (a)))是一个字符串,不能从字符串中减去。

你需要使用括号:

"a - b is " + (a - b) 
+1

谢谢!我只是面对如此艰难。 – WilRebl

0

+-考虑作为字符串操作,其中从表达被评估从左到右。为了避免这种情况纪念减法来在高优先级,当你与()

System.out.println("a - b is " + (a - b)); 

现在由于优先级的括号内(a-b)表达式求值,然后再整个表达式由左到右环绕其发生。

相关问题