public String motorNoise() {
String[] ignition={"vroom","pop","bang"};
engineNoise=(int)(Math.random()*3);
startEngine=ignition[engineNoise];
if (engineNoise==2)
System.out.println("This car needs a service");
return startEngine;
}但此序列会导致无法到达的代码错误。为什么If语句的位置导致方法失败?
public String motorNoise() {
String[] ignition={"vroom","pop","bang"};
engineNoise=(int)(Math.random()*3);
startEngine=ignition[engineNoise];
return startEngine;
if (engineNoise==2)
System.out.println("This car needs a service");
}发布于 2022-04-28 08:55:37
因为在第一个示例中,如果通过该方法获得所有可能的路径,则将执行所有语句。
但是,在第二个示例中,永远无法执行if语句:
public String motorNoise() {
String[] ignition={"vroom","pop","bang"};
engineNoise=(int)(Math.random()*3);
startEngine=ignition[engineNoise];
return startEngine; // <-- EXECUTED UNCONDITIONALLY, FUNCTION TERMINATES
if (engineNoise==2)
System.out.println("This car needs a service");
}return startEngine总是无条件地执行,并立即终止函数的执行。if (engineNoise == 2)是无法执行的。
注意:正确格式化和缩进代码以及使用大括号总是有好处的。你的第一个例子
public String motorNoise() {
String[] ignition={"vroom","pop","bang"};
engineNoise=(int)(Math.random()*3);
startEngine=ignition[engineNoise];
if (engineNoise==2)
System.out.println("This car needs a service");
return startEngine;
}实际上是:
public String motorNoise() {
String[] ignition={"vroom","pop","bang"};
engineNoise=(int)(Math.random()*3);
startEngine=ignition[engineNoise];
if (engineNoise==2) {
System.out.println("This car needs a service");
}
return startEngine;
}因此,影响执行的不仅是行的顺序,还包括代码块的嵌套。if-语句正文中的任何内容都只能有条件地执行。
https://stackoverflow.com/questions/72040625
复制相似问题