我的JAVA代码有什么问题?

我的JAVA代码有什么问题?,java,Java,有人能帮我写这个问题的代码吗 你开得有点太快了,一个警察拦住了你。编写代码计算结果,编码为int值:0=无票,1=小票,2=大票。如果速度小于等于60,则结果为0。如果速度介于61和80之间,则结果为1。如果速度大于等于81,则结果为2。除非是你的生日——那天,你的速度在任何情况下都可以提高5倍 这是我得到的,它没有编译 public int caughtSpeeding(int speed, boolean isBirthday) { int noTicket = 0; int sma

有人能帮我写这个问题的代码吗

你开得有点太快了,一个警察拦住了你。编写代码计算结果,编码为int值:0=无票,1=小票,2=大票。如果速度小于等于60,则结果为0。如果速度介于61和80之间,则结果为1。如果速度大于等于81,则结果为2。除非是你的生日——那天,你的速度在任何情况下都可以提高5倍

这是我得到的,它没有编译

public int caughtSpeeding(int speed, boolean isBirthday) {
  int noTicket = 0;
  int smallTicket = 1;
  int bigTicket = 2;

  if (speed <= 60) {
      return noTicket;
  } else if (speed >= 61 && speed <= 80) {
      return smallTicket;
  } else if (speed >= 81){
      return bigTicket;
  } else{
      return 8;
  }
  if (isBirthday) && (speed <= 65) {
      return noTicket;
  } else if (isBirthday) && (speed >= 66 && speed <= 86) {
      return smallTicket;
  } else if(isBirthday) && (speed >= 86) {
      return bigTicket;
  } else {
      return 7;
  } 
}

第一个else if块在方法体之外,这显然是一个错误。它应该在第一个if块之后,在方法体内部。事实上,方法体在任何if-else块结束之前结束,它们都应该在方法体内部

如果Java编译器抱怨您的代码,它几乎总是会准确地告诉您问题所在,您应该仔细阅读错误消息,并将其显示给您寻求帮助的人

在这种特殊情况下,它可能会抱怨无法访问的代码,因为无论您的速度如何,它都会从第一个if块返回一些内容,这意味着您无法访问第二个if块。我也不确定为什么在规范中没有提到7和8的可能性时,您会从代码中返回7和8。编译器接受代码的唯一原因是它也是不可访问的

最重要的是,第二个块中的if语句的形式:

if(isBirthday) && (speed <= 65){
试试这个:

public int caughtSpeeding(int speed, boolean isBirthday) {
  int noTicket = 0;
  int smallTicket = 1;
  int bigTicket = 2;

  if (isBirthday && speed <= 65) {
      return noTicket;
  } else if (isBirthday && speed >= 66 && speed <= 86) {
      return smallTicket;
  } else if(isBirthday && speed >= 86) {
      return bigTicket;
  } else if (speed <= 60) {
      return noTicket;
  } else if (speed >= 61 && speed <= 80) {
      return smallTicket;
  } else if (speed >= 81){
      return bigTicket;
  } else{
      return 8;
  }
}

请注意isBirthday是如何与其他条件组合的。

除了格式问题之外,还有一个逻辑问题。返回值后,您正在检查isBirthday。这项检查需要先进行。此外,您的代码似乎表明,如果是生日,则不退还任何罚单,但家庭作业:看起来结果应该是您得到66-85之间的小罚单,86之间的大罚单。

1格式不清晰。2阅读、思考、搜索和解释编译器错误消息。3提示:如果表达式在括号内告诉我们编译此代码时编译器会抛出什么错误,请接受@user2864740的提示,然后返回并询问一个关于它为什么不工作的特定问题。例如,为什么IsBirth布尔值不起作用。
def fine(speed, isbirthday):
    if isbirthday:
        leniancy = 5
    else:
        leniency = 0

    if speed <= 60 + leniency:
        return 0

    if speed <= 80 + leniency:
        return 1

    return 2
public int caughtSpeeding(int speed, boolean isBirthday) {
  int noTicket = 0;
  int smallTicket = 1;
  int bigTicket = 2;

  if (isBirthday && speed <= 65) {
      return noTicket;
  } else if (isBirthday && speed >= 66 && speed <= 86) {
      return smallTicket;
  } else if(isBirthday && speed >= 86) {
      return bigTicket;
  } else if (speed <= 60) {
      return noTicket;
  } else if (speed >= 61 && speed <= 80) {
      return smallTicket;
  } else if (speed >= 81){
      return bigTicket;
  } else{
      return 8;
  }
}