If Else AssignmentOperator问题-Java
我是一名Java课程的初学生,所以你们可能觉得这很愚蠢。这是密码If Else AssignmentOperator问题-Java,java,syntax-error,Java,Syntax Error,我是一名Java课程的初学生,所以你们可能觉得这很愚蠢。这是密码 class CyclingResult implements IEvent { double time; int finishOrder; CyclingResult(double time, int finishOrder) { this.time = time; this.finishOrder = finishOrder; } public double pointsEarned()
class CyclingResult implements IEvent {
double time;
int finishOrder;
CyclingResult(double time, int finishOrder) {
this.time = time;
this.finishOrder = finishOrder;
}
public double pointsEarned() {
return if (this.finishOrder == 1) {
(this.time - 10);
} else if (this.finishOrder == 2) {
(this.time - 7);
} else if (this.finishOrder == 3) {
(this.time - 3);
} else {
this.time;
}
}
}
我得到一组5“错误:语法错误,插入“AssignmentOperator表达式”以完成表达式”
我确信我的代码中出现了一些愚蠢的事情,但我能找到的示例有点超出我的理解力,无法找出差异。在Java中,您不能返回
if
语句。与其他语言(如Scala)不同,if
语句正好是:一个语句(没有值)
相反,您需要分别返回每个if/else块
public double pointsEarned() {
if (this.finishOrder == 1) {
return (this.time - 10);
} else if (this.finishOrder == 2) {
return (this.time - 7);
} else if (this.finishOrder == 3) {
return (this.time - 3);
} else {
return this.time;
}
}
在Java中,不能返回
if
语句。与其他语言(如Scala)不同,if
语句正好是:一个语句(没有值)
相反,您需要分别返回每个if/else块
public double pointsEarned() {
if (this.finishOrder == 1) {
return (this.time - 10);
} else if (this.finishOrder == 2) {
return (this.time - 7);
} else if (this.finishOrder == 3) {
return (this.time - 3);
} else {
return this.time;
}
}
您没有正确返回值。如果要立即返回值,则必须对每个条件使用return
public double pointsEarned() {
if (this.finishOrder == 1) {
return (this.time - 10);
} else if (this.finishOrder == 2) {
return (this.time - 7);
} else if (this.finishOrder == 3) {
return (this.time - 3);
}
return this.time;
}
对于多个I/EF if语句,你应该考虑使用一个开关语句:
public double pointsEarned() {
switch (this.finishOrder) {
case 1:
return (this.time - 10);
case 2:
return (this.time - 7);
case 3:
return (this.time - 3);
default:
break;
}
return this.time;
}
您没有正确返回值。如果要立即返回值,则必须对每个条件使用return
public double pointsEarned() {
if (this.finishOrder == 1) {
return (this.time - 10);
} else if (this.finishOrder == 2) {
return (this.time - 7);
} else if (this.finishOrder == 3) {
return (this.time - 3);
}
return this.time;
}
对于多个I/EF if语句,你应该考虑使用一个开关语句:
public double pointsEarned() {
switch (this.finishOrder) {
case 1:
return (this.time - 10);
case 2:
return (this.time - 7);
case 3:
return (this.time - 3);
default:
break;
}
return this.time;
}
最接近您在此处尝试执行的操作是嵌套条件运算符:
return (this.finishOrder == 1) ? (this.time - 10)
: (this.finishOrder == 2) ? (this.time - 7)
: (this.finishOrder == 3) ? (this.time - 3)
: this.time;
如果…,则不能使用
返回,因为,.最接近您在此处尝试执行的操作是嵌套条件运算符:
return (this.finishOrder == 1) ? (this.time - 10)
: (this.finishOrder == 2) ? (this.time - 7)
: (this.finishOrder == 3) ? (this.time - 3)
: this.time;
如果…
是语句而不是表达式,则不能使用返回,因为。所以它没有值。不能返回if(…)块。有几种方法可以解决这个问题。一个简单的解释是删除“如果(这个…)之前的“返回”,并将“返回”放在每一个”(this.time-…)之前的同一行上。我试图用它来根据这个时间生成一个“分数”,除非运动员在第一、第二或第三名,在这种情况下,你会从他们的分数中减去一点,有点像高尔夫球。编辑:你的修复成功了,萨夫隆。非常感谢你。如果
是一个语句,而不是一个表达式,我永远也想不到这一点。所以它没有值。不能返回if(…)块。有几种方法可以解决这个问题。一个简单的解释是删除“如果(这个…)之前的“返回”,并将“返回”放在每一个”(this.time-…)之前的同一行上。我试图用它来根据这个时间生成一个“分数”,除非运动员在第一、第二或第三名,在这种情况下,你会从他们的分数中减去一点,有点像高尔夫球。编辑:你的修复成功了,萨夫隆。非常感谢你。我永远也想不到这一点。这并不完全符合OP的意图。它的副作用是改变字段的值;一些OP没有要求的东西。这不完全符合OP想要做的。它的副作用是改变字段的值;OP没有要求的东西。不使用此选项的实际原因是您无法使用调试器轻松完成此操作。不使用此选项的实际原因是您无法使用调试器轻松完成此操作。