复杂的条件和无法访问的语句
Complex Conditionals and Unreachable Statements
我是 Java 的新手,遇到了一些麻烦。我觉得这很容易解决。基本上,如果满足两个条件,我会寻找 return 声明。下面是我附加的代码。
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 语句。
好的,我检查了你的图片(我通常不这样做)并在你的代码中发现了几个问题。
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";
}
您的代码包含几个错误:
Windy = true
中的 =
应该是 ==
。 =
是赋值,==
是检查是否相等。
- 因为您的第一个
if (Windy = true) return "It is Windy"; else return "Not Windy";
将始终 return 两者之一,所以您下面的其余代码无法访问并且永远不会被执行。
- 即使可以访问,也应该删除
if (temperature < 30);
处的尾随分号。
- 您方法中的
{}
块不是必需的。
我认为这就是您要使用代码查找的内容:
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
作为 class 变量或方法参数检索。
此外,由于windy
本身是一个布尔值,== true
是多余的,if(windy)
就足够了。
PS:Java 中的变量名是驼峰式命名的最佳做法,因此在这种情况下使用 windy
而不是 Windy
。
我还在 if/else-if/else 语句周围添加了方括号。它们不是必需的,如果您真的愿意,可以将它们省略,但修改代码更容易,以后不会出错。
您可以使用“&&”= 和“||”来比较条件= 或:
if (Windy && temperature < 30) {
return "it's windy and temperature is <30";
} else if (!Windy && temperature > 30) {
return "Not Windy";
}
我是 Java 的新手,遇到了一些麻烦。我觉得这很容易解决。基本上,如果满足两个条件,我会寻找 return 声明。下面是我附加的代码。
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 语句。
好的,我检查了你的图片(我通常不这样做)并在你的代码中发现了几个问题。
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";
}
您的代码包含几个错误:
Windy = true
中的=
应该是==
。=
是赋值,==
是检查是否相等。- 因为您的第一个
if (Windy = true) return "It is Windy"; else return "Not Windy";
将始终 return 两者之一,所以您下面的其余代码无法访问并且永远不会被执行。 - 即使可以访问,也应该删除
if (temperature < 30);
处的尾随分号。 - 您方法中的
{}
块不是必需的。
我认为这就是您要使用代码查找的内容:
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
作为 class 变量或方法参数检索。
此外,由于windy
本身是一个布尔值,== true
是多余的,if(windy)
就足够了。
PS:Java 中的变量名是驼峰式命名的最佳做法,因此在这种情况下使用 windy
而不是 Windy
。
我还在 if/else-if/else 语句周围添加了方括号。它们不是必需的,如果您真的愿意,可以将它们省略,但修改代码更容易,以后不会出错。
您可以使用“&&”= 和“||”来比较条件= 或:
if (Windy && temperature < 30) {
return "it's windy and temperature is <30";
} else if (!Windy && temperature > 30) {
return "Not Windy";
}