减法程序中的一个非常简单的错误

时间:2012-12-24 22:44:46

标签: java

我在最后一个print语句中遇到了一个非常简单的错误。但我不知道背后的确切原因。即使逻辑也是正确的,语法也是如此。

请告诉我错误的确切原因。

由于

import java.util.Scanner;
public class main
{
    public static void main(String args[])
    {
        int c,d;
        Scanner s = new Scanner(System.in);
        System.out.print("Enter the first number : ");
        c = s.nextInt();
        System.out.print("Enter the second number : ");
        d = s.nextInt();

        System.out.println("The sub is : "+ c-d);

    }
}

3 个答案:

答案 0 :(得分:3)

减法周围需要括号:

System.out.println("The sub is : " + (c - d));

这是因为没有括号,+-运算符具有相同的优先级并且从左到右关联。因此编译器会尝试解析它,就像它被写入一样:

System.out.println(("The sub is : " + c) - d);

第一部分没问题,是一个产生String结果的表达式。很遗憾,因此无法将-运算符应用于左侧为String且右侧为int的表达式。

答案 1 :(得分:2)

那是因为,你正在尝试进行字符串连接,因为你的第一个操作数是一个字符串。

试试这个:

System.out.println("The sub is : "+ (c-d));

注意括号中的(c-d)。

编译器会抱怨-运算符未定义为string和int。

  

运算符 - 未定义参数类型String,int

请注意Sub is:+ c结果将是一个字符串。现在

`Sub is:+ c` - d;
^^String     - int

答案 2 :(得分:0)

使用

System.out.println("The sub is : "+ (c-d));

而不是

System.out.println("The sub is : "+ c-d);

并检查它现在是否正常工作。