我在最后一个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);
}
}
答案 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);
并检查它现在是否正常工作。