1

在最后一个打印语句中,我在以下程序中遇到了一个非常简单的错误。但我不知道它背后的确切原因。甚至逻辑是正确的,语法也是正确的。

请让我知道错误的确切原因。

谢谢

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);

    }
}
4

3 回答 3

3

您需要在减法周围加上括号:

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

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

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

第一部分没问题,是一个产生String结果的表达式。不幸的是,没有办法将-运算符应用于左侧为 aString而右侧为 a 的表达式int

于 2012-12-24T22:45:44.793 回答
2

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

尝试这个:

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

注意括号中的 (cd)。

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

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

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

`Sub is:+ c` - d;
^^String     - int
于 2012-12-24T22:45:35.980 回答
0

利用

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

代替

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

并检查它现在是否工作。

于 2012-12-24T22:45:53.960 回答