请注意以下代码段中的打印声明。我的问题是如何如果我尝试在print语句中添加两个双打它打印错误,但如果我将它们添加到print语句之外并将结果存储在变量中,而不是我能够正确打印它。
为什么这样做并打印出正确的结果?
public static void main(String argsp[]){
Scanner input = new Scanner(System.in);
double first, second, answer;
System.out.println("Enter the first number: ");
first = input.nextDouble();
System.out.println("Enter the second number: ");
second = input.nextDouble();
answer = first + second;
System.out.println("the answer is " + answer);
}
为什么打印出错误的结果?
public static void main(String argsp[]){
Scanner input = new Scanner(System.in);
double first, second;
System.out.println("Enter the first number: ");
first = input.nextDouble();
System.out.println("Enter the second number: ");
second = input.nextDouble();
System.out.println("the answer is " + first+second);
}
答案 0 :(得分:5)
这是因为你在第二部分基本做的是:
System.out.println("the answer is " + String.valueOf(first) + String.valueOf(second));
这就是编译器解释它的方式。因为当您向方法提供+
时,String
运算符不是计算,而是连接。
如果您希望在一行中完成,请按以下步骤操作:
System.out.println("the answer is " + (first + second)); //Note the () around the calculation.
答案 1 :(得分:3)
如果对操作符的优先级有疑问,只需使用parens。阅读起来也更清楚。
System.out.println("the answer is " + (first+second));
答案 2 :(得分:2)
在第二种情况下,双打被转换为String
,因为+
被认为是String
连接。要解决此问题,请使用括号对应执行数值计算的表达式进行分组:
System.out.println("the answer is " + (first + second));