基本的java打印

时间:2012-05-24 13:09:49

标签: java

请注意以下代码段中的打印声明。我的问题是如何如果我尝试在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);

    }

3 个答案:

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