2

以下のコード セグメントの print ステートメントに注意してください。私の質問は、print ステートメントに 2 つの double を追加しようとすると正しく印刷されないのですが、それらを 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);

    }
4

3 に答える 3

5

それは、その 2 番目の部分で基本的に行っていることは次のとおりであるためです。

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

それがコンパイラがそれを解釈する方法です。メソッドに+a を与えるときの演算子は計算ではなく連結であるためです。String

1 行で実行する場合は、次のようにします。

System.out.println("the answer is " + (first + second)); //Note the () around the calculation.
于 2012-05-24T13:14:45.943 に答える
3

演算子の優先順位が疑わしい場合は、括弧を使用してください。読み方もすっきり。

System.out.println("the answer is " + (first+second));
于 2012-05-24T13:14:38.547 に答える
2

2番目のケースでは、が連結と見なされるため、doubleはStringsに変換されます。これを回避するには、括弧を使用して、数値計算を実行する必要のある式をグループ化します。+String

 System.out.println("the answer is " + (first + second));
于 2012-05-24T13:15:39.903 に答える