Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If Else AssignmentOperator问题-Java_Java_Syntax Error - Fatal编程技术网

If Else AssignmentOperator问题-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()

我是一名Java课程的初学生,所以你们可能觉得这很愚蠢。这是密码

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没有要求的东西。不使用此选项的实际原因是您无法使用调试器轻松完成此操作。不使用此选项的实际原因是您无法使用调试器轻松完成此操作。