CodingBat Logic-1> caughtSpeeding

时间:2017-06-07 12:57:22

标签: java if-statement

您好我是Java的新手,我需要一些帮助。问题来自编码蝙蝠:

你驾驶的速度有点太快,一名警察阻止你。编写代码来计算结果,编码为int值:0 =没有票,1 =小票,2 =大票。如果速度为60或更低,则结果为0.如果速度在61和80之间,则结果为1.如果速度为81或更高,则结果为2.除非是您的生日 - 在那一天,您的在所有情况下,速度可以高5。

 public int caughtSpeeding(int speed, boolean isBirthday) {
      Integer int2 = 0;
      if (speed <= 60){
        int2 = 0;
      }
      if (isBirthday = true){
       if (speed >=61 && speed <= 85){
        int2 = 1;
       }
       if (speed >= 86){
         int2 = 2;
       }
      }
      if (isBirthday = false){
        if (speed >=61 && speed <=80){
          int2 = 1;
        }
        if (speed >= 81){
          int2 = 2;
        }
      }
      return int2; 
    }

当我的代码运行到= 1时,我被抓住了(65,true)应为0,当我的代码再次运行到= 1时,caughtSpeeding(85,false)应为2。

由于

5 个答案:

答案 0 :(得分:0)

首先,这一行:

if (isBirthday = true){

应更改为:

if (isBirthday == true){

检查两个表达式是否相等的等于运算符是==而不是=。修复此问题后,您还需要检查代码中的其他内容。再次仔细阅读问题并确保您的逻辑在所有可能的情况下都返回正确的输出。

答案 1 :(得分:0)

稍微更改您的isBirthday if语句。

= // 'make this left-side value equal something'. 
== // 'comparison of two values'

所以对于isBirthday你可能有

if(isBirthday) // is 'isBirthday' true?
if(isBirthday == true) // same as above

if(!isBirthday) // is 'isBirthday' not true (false)?
if(isBirthday == false) // same as above

答案 2 :(得分:0)

修正了它:

public int caughtSpeeding(int speed, boolean isBirthday) {
      Integer int2 = 0;
      if (speed <= 60){
        int2 = 0;
      }
      if (isBirthday == true){
       if (speed <=65){
         int2 = 0;
       }
       if (speed >=66 && speed <= 85){
        int2 = 1;
       }
       if (speed >= 86){
         int2 = 2;
       }
      }
      if (isBirthday == false){
        if (speed >=61 && speed <=80){
          int2 = 1;
        }
        if (speed >= 81){
          int2 = 2;
        }
      }
      return int2; 
    }

答案 3 :(得分:0)

您也可以尝试

public static int caughtSpeeding(int speed, boolean isBirthday) {

    int extra = 0;
    if (isBirthday) {
        extra = 5;
    }
    if (speed <= (60 + extra)) {
        return 0;
    } else if (speed >= (61 + extra) && speed <= (80 + extra)) {
        return 1;
    } else {
        return 2;
    }
}

答案 4 :(得分:0)

    public int caughtSpeeding(int speed, boolean isBirthday)
    {
    if(speed<=60||(isBirthday&&speed<=65))
    return 0;
    else if(speed>=61&&speed<=80||(isBirthday&&speed<=85))
    return 1;
    else
    return 2;
    }