我通过一系列的解释和练习来学习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之间,依此类推。由于我是新人,我们将不胜感激。
答案 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语句中的范围。 做你现在拥有的就足够了。