2012-05-24 3 views
2

Обратите внимание на операторы печати в нижеприведенных сегментах кода. Мой вопрос заключается в следующем. Если я попытаюсь добавить два удвоения в выражении печати, он печатает неправильно, но если я добавлю их за пределы оператора печати и сохраню результат в переменной, чем я могу правильно ее напечатать.Базовая java-печать

Почему это работает и распечатывает правильный результат?

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

    } 
+1

какие результаты .. ?? –

+1

отлично работает для меня. Введите первый номер: Введите первый номер: ответ 2.02.0 –

+0

@owengerig ОП пытается сделать операнды группы компилятора по близости. Посмотрите, как эти двое обнимаются вместе? :) –

ответ

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. 
3

В случае сомнений с приоритетом операторов просто используйте parens. Это также яснее читать.

System.out.println("the answer is " + (first+second)); 
2

Во втором случае, двойники преобразуются в String с, потому что + считается String конкатенацию. Чтобы обойти это, используйте круглые скобки для группировки выражений, которые должны выполнять численные вычисления:

System.out.println("the answer is " + (first + second)); 
Смежные вопросы