如何在if / else语句Java中包含一系列数字

时间:2015-08-23 21:29:24

标签: java

我通过一系列的解释和练习来学习Java,其中一个是创建一个程序,根据多个点(0-29,显示数字等级(0-5) 30-34,35-39,40-44,45-49,50-60)。

System.out.println("Type the points [0-60]: ");
double points = reader.nextDouble();
reader.nextLine();
if (points < 29) {
    System.out.println("Grade: FAILED.");
} else if (points <= 34) {
    System.out.println("Grade: 1.");
} else if (points <= 39) {
    System.out.println("Grade: 2.");
} else if (points <= 44) {
    System.out.println("Grade: 3.");
} else if (points <= 49) {
    System.out.println("Grade: 4.");
} else if (points >= 50) {
    System.out.println("Grade: 5.");
}

该程序的工作原理是,由于命令重叠,它会给出正确的等级,但有没有办法创建一系列符合if / else语句条件的数字或字符串?例如,如果输入的数字介于40-44之间,依此类推。由于我是新人,我们将不胜感激。

5 个答案:

答案 0 :(得分:4)

将数字除以5,并使用等级的文字表示形成一个包含十二个字符串的数组:

private static final String GRADE_FAILED = "FAILED";
private static final String GRADE_1 = "1";
private static final String GRADE_2 = "2";
private static final String GRADE_3 = "3";
private static final String GRADE_4 = "4";
private static final String GRADE_5 = "5";

private static String GradeStr[] = new {
    GRADE_FAILED // 0..4
,   GRADE_FAILED // 5..9
,   GRADE_FAILED // 10..14
,   GRADE_FAILED // 15..19
,   GRADE_FAILED // 20..24
,   GRADE_FAILED // 25..29
,   GRADE_1      // 30..34
,   GRADE_2      // 35..39
,   GRADE_3      // 40..44
,   GRADE_4      // 45..49
,   GRADE_5      // 50..54
,   GRADE_5      // 55..59
,   GRADE_5      // 60..64 // Only sixty matters
};

System.out.println("Grade:"+GradeStr[points/5]+".");

如果您需要更多粒度,请创建一个更大的数组,除以较小的数字或完全跳过除法,并将常数设置在与需要打印的等级相对应的位置。这可以让你完全避免条件。

重要免责声明:当选项数量较少时,此方法效果最佳 - 最多可达一百个。当您的问题允许这种方法时,它是迄今为止最快的方法。在许多情况下,它也是最容易阅读的。

答案 1 :(得分:2)

如果要测试数字是否介于某些值之间,请使用逻辑运算符AND表示if语句:

if(points>=40 && points <=45)

为了更清晰,我建议你像这样进行控制反转:

    int grade;
    if(points >49){
        grade=5;
    }else if(points >44){
        grade=4;
    }else if(points >39){
        grade=3;
    }else if(points >34){
        grade=2;
    }else if(points >29){
        grade=1;
    }else{
        grade=0;

  }
    System.out.println("Gr: "+grade); //grade=0 = not passed

答案 2 :(得分:1)

我想你可能在寻找

if( points<=44 && points>=40 ) 

答案 3 :(得分:1)

如果你想检查一个数字是否介于两个值之间,你可以在if语句中使用和:

if (points >= 40 && points <= 44) {
    System.out.println("Grade: 3.");
}

答案 4 :(得分:1)

如果要检查if语句中的范围,可以执行以下操作:

if(points >= 0 && points <= 29)

这是通过将条件组合在一起使用&&(和)运算符。

但是你真的不需要检查任何if语句中的范围。 做你现在拥有的就足够了。