Сложные условия и недостижимые утверждения - PullRequest
0 голосов
/ 31 августа 2018

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

boolean Windy = false;

if (Windy = true) 
  return "It is Windy";
else 
  return "Not Windy";

if (temperature < 30);
{return "Too Windy or Cold! Enjoy watching the weather through the window";

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

Ответы [ 3 ]

0 голосов
/ 31 августа 2018

Ваш код содержит несколько ошибок:

  1. Вместо = в Windy = true должно быть ==. = означает присвоение чего-либо, а == - проверку на равенство.
  2. Поскольку ваш первый if (Windy = true) return "It is Windy"; else return "Not Windy"; всегда будет возвращать один из двух, остальная часть вашего кода ниже недоступна и никогда не будет выполнена.
  3. Даже если бы это было достижимо, конечная точка с запятой в if (temperature < 30); должна быть удалена.
  4. Блок {} внутри вашего метода не нужен.

Я думаю, это то, что вы ищете с помощью своего кода:

boolean windy = false;

if(windy){
  return "It is Windy";
} else if(temperature < 30){
  return "Too Windy or Cold! Enjoy watching the weather through the window";
} else{
  return "Not Windy";
}

Конечно, установка windy в false жестко запрограммированного типа делает также невозможным получение первой проверки. Но я предполагаю, что это только ваш пример кода, и в вашем реальном коде вы извлекаете windy как переменную класса или параметр метода.

Кроме того, поскольку windy сам по себе является логическим значением, == true является избыточным, и достаточно просто if(windy).

PS: Имена переменных в Java лучше всего использовать в CamelCase, поэтому в этом случае используйте windy вместо Windy.
Я также добавил скобки вокруг операторов if / else-if / else. Они не обязательны, и вы можете оставить их, если вы действительно этого хотите, но проще модифицировать код, не делая ошибок позже.

0 голосов
/ 31 августа 2018

Вы можете сравнить критерии, используя "&&" = и "||" = или:

if (Windy && temperature < 30) {
return "it's windy and temperature is <30";
} else if (!Windy && temperature > 30) {
return "Not Windy";
}
0 голосов
/ 31 августа 2018

ОК, я проверил ваше изображение (чего я обычно не делаю) и обнаружил несколько проблем в вашем коде.

public static String getWeatherAdvice(int temperature, String description)
{
  { // REMOVE THIS BRACKET
    if ( Windy = true) // = signifies an assigning a value, not a comparison. Use ==
      return "It is Windy";
    else
      return "Not Windy";

    if ( temperature < 30 ); // Since the above if-else will always return a value, this
    // code can not be reached. Put this if before the previous if-else. Also: remove the ; after the if statement, otherwise, it ends the if, and the return statement might be triggered.
    { // don't put this bracket if you have a ; after the if
      return "Too windy ... ";
    } // don't put this bracket if you have a ; after the if
  } // REMOVE THIS BRACKET
}

Исправленная версия вашего кода (может быть):

public static String getWeatherAdvice(int temperature, String description)
{
   if ( temperature < 30 )
    { 
      return "Too windy ... ";
    } 

    if ( Windy == true) // can also be written as: if ( Windy ) 
      return "It is Windy";
    else
      return "Not Windy";    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...