public String toString() {

String details = number + ", " + RACE_DESCRIPTIONS[typeIndex] + "[" + date + "]" + ":";
if (!hasFinished) {
  details += "Race not finished";
} else if  (hasFinished = true) {
  details += "\n     1st: " + competitors[0].getName();
  details += "\n     2nd: " + competitors[1].getName();
  details += "\n     3rd: " + competitors[2].getName();
} else if {
  details += "n/a";
}
return details;


如果尚未设置位置,则应返回字符串文字“ n / a”,而不是人员的姓名。
-如果1st,2nd和3rd不正确,我正在尝试编写IF语句,而是返回n / a。

最佳答案

出于以下两个原因,您将永远不会执行details += "n/a"


您正在将hasFinished分配给true中的if(正如其他人所指出的那样):

else if  (hasFinished = true)


它应该是

else if  (hasFinished)

最重要的是,您的代码具有以下形式:

if (false) {
    ...
} else {
    if (true) {
    } else {
        //this is false, it was supposed to be hitted before
    }
}



因此,即使您进行了第一个修复,其背后的逻辑也没有任何意义。您应该在第二个if中使用另一个评估来处理最后一个else语句。例如:

if (!hasFinished) {
    ...
} else {
    //the hasFinished usage here has no sense, being commented
    //just left it to show this is supported
    //if (hasFinished && someValue <= someOtherValue) {
    if (someValue <= someOtherValue) {
        ...
    } else {
        ...
    }
}

关于java - 查询if语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19141542/

10-12 12:27
查看更多