true / false логическое значение внутри метода println

1
public void run(){
    int x = 9; 
    int y = 9;

    println( "true or false = " + (x == y) );
    println("true or false = " + ( x < y) );
    prinltn("true or false = " + (x > y) );

}

В примере моя книга использует круглые скобки () внутри метода println для проверки того, что-то истинно или ложно. Это был мой первый раз, когда () использовался как логический тест внутри метода println. Раньше я решил решить проблему чем-то вроде

  if (x == y) {
     println("true or false = true");
  } else {
     println("true or false = false");
  }
  1. где можно найти дополнительную информацию о булевом внутри метода println?
  2. Правильнее ли другое? Должен ли я избегать использования одного из приведенных выше примеров?
  • 1
    это не для проверки, это просто показать (напечатать) результат, поэтому, когда вы используете IF (), это тестирование, а скобки используются для переноса выражения, и это нормально, вы даже можете использовать их с одним значением println( (1) + (2) );
  • 0
    Если я изменил утверждение, чтобы читать println ("true или false =" + (x - 3)); ... результатом в скобках будет число 6 вместо истина / ложь. Правильно ли предположить, что если операторы в скобках <или> или ==, результат будет истинным / ложным?
Показать ещё 2 комментария
Теги:
boolean
println

6 ответов

1
Лучший ответ

Нет. Не избегайте. Используйте (). Это не о внутреннем println. это все о конкатенации строк.

Просто для изменения попробуйте выполнить приведенные ниже инструкции и проверить результаты.

println( "true or false = " + (x == y) );

а также

println( "true or false = " +x == y) );

В нижеприведенном случае для изображения используется приоритет оператора.

Опять же, перейдя к сути, почему использование скобки внутри метода печати (x == y), скобки имеют высокую точность, поэтому операторы внутри них выполняются сначала перед оценкой всего выражения.

2

Правильнее ли другое?

Правильно, это не совсем правильный термин, чтобы описать его, поскольку оба они отлично работают. Единственное отличие - это строки кода. Так нет. Оба они правы.

Следует ли мне избежать использования одного из приведенных выше примеров?

Не совсем, но я рекомендую вам сделать свой код как можно короче, чтобы упростить его работу, как и первый.


Что касается того, что происходит с этими println это просто простая конкатенация строк:

println("true or false = " + (x == y) );
//       true or false =       true
1

Первый из них целесообразен только потому, что он имеет относительно меньшее количество строк кода, но это не значит, что другое неверно. Если вы вообще хотите использовать логическое o/p теста, выполняемого на x & y, которое будет использоваться в вашем коде, тогда вам придется идти for-->

boolean b=(x==y);

Тогда "b" может быть повторно использовано в дальнейшем.

1

здесь() не используется для логического теста, он используется для приоритета. Если вы не используете(), то сначала x будет преобразован в String, тогда вы не сможете использовать == со строкой и целым числом

(incompatible operand types String and int)

Чтобы избежать этого, мы должны использовать()

(x == y) 

Я могу предложить вам, что первый пример хорош, он уменьшает количество строк.

println("true or false = " + (x == y) );
1

Когда вы проверяете, что-то истинно, это условие становится логическим значением (true или false). Булевы значения могут быть назначены и напечатаны так же, как и другие типы (например, int). Поэтому, если вы ставите:

System.out.println("true or false = " + (x == y));

это то же самое, что и делать:

boolean f = (x==y);
System.out.println("true or false = " + f);

это то же самое, что и делать:

boolean f;
if (x==y) {
    f = true;
} else {
    f = false;
}
System.out.println("true or false = " + f);
0

Попробуй это:

String result = (x == y) ? "true" : "false";
System.out.println("true or false = " + result);
  • 0
    Я думаю, что это будет более полезным для оп и дальнейших посетителей, когда вы добавите некоторые объяснения к вашей цели.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню