7

これは私のコードです:

public static void main(String[] arg)
{

    String x = null;
    String y = "10";
    String z = "20";

    System.out.println("This my first out put "+x==null?y:z);

    x = "15";

    System.out.println("This my second out put "+x==null?y:z);

}

私の出力は次のとおりです。

20
20

しかし、私はこれを期待しています:

This my first out put 10
This my second out put 20

両方のprintln呼び出しの出力として「20」が表示される理由を誰かに説明してもらえますか?

4

4 に答える 4

9

System.out.println("This my first out put "+x==null?y:z); 次のように実行されます

("This my first out put "+x)==null?y:zこれは決して真実ではありません。したがって、z値が表示されます。

例えば:

int x=10;
int y=20;
System.out.println(" "+x+y); //display 1020
System.out.println(x+y+" "); //display 30

上記のシナリオでは、操作は左から右に実行されます。

あなたが言ったように、あなたはこれを期待しています:

This my first output 10

このため、コードを少し変更する必要があります。これを試して

System.out.println("This my first output " + ((x == null) ? y : z));

于 2012-12-19T07:25:31.300 に答える
4

試す

System.out.println("This my first out put "+ (x==null?y:z));
于 2012-12-19T07:25:03.963 に答える
2

次のコードを使用すると、問題が解決します。

System.out.println(("This my first out put "+x==null?y:z);   

として

System.out.println(("This my first out put "+x)==null?y:z);

public static void main(String[] arg)
{

    String x = null;
    String y = "10";
    String z = "20";

    System.out.println("This my first out put "+(x==null?y:z));

    x = "15";

    System.out.println("This my second out put "+(x==null?y:z));

}
于 2012-12-19T07:29:12.297 に答える
1

あなたは試す必要があります:

System.out.println("This my first out put "+(x==null?y:z));
x = "15";
System.out.println("This my second out put "+(x==null?y:z));
于 2012-12-19T07:26:56.530 に答える