println не печатает ожидаемое значение

Это мой код:

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

Может кто-нибудь объяснить мне, почему я получаю "20" в качестве вывода для обоих вызовов println?

4 ответа

Решение

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

Пытаться

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

Используйте следующий код, чтобы решить вашу проблему: Проблема в том, что

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

}

Вам нужно попробовать:

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));
Другие вопросы по тегам