您如何将以下内容转换为嵌套 if语句?
if (numProductivity > 69 && numProductivity <= 199) bonus = BONUS_3;
if (numProductivity > 30 && numProductivity <= 69) bonus = BONUS_2;
if (numProductivity > 0 && numProductivity <= 30) bonus = BONUS_1;
else bonus = BONUS_4;
答案 0 :(得分:0)
我认为嵌套if语句不适合。相反,一串if-else语句更好地表达了这一想法。
if (numProductivity <= 0)
bonus = 0; // I GUESSED AT THIS
else if (numProductivity <= 30)
bonus = BONUS_1;
else if (numProductivity <= 69)
bonus = BONUS_2;
else if (numProductivity <= 199)
bonus = BONUS_3;
else // >= 200
bonus = BONUS_4;
我认为生产力为0是可能的,因此不应授予任何奖金,而应授予最高奖金。
我假设BONUS_4是最高奖金(根据其他情况的命名)-您对此的原始代码尚不清楚,因为它将(错误地)为任何numProductivity> 30分配BONUS_4。
如果我们真的想要嵌套ifs:
if (numProductivity > 0) {
if (numProductivity > 30) {
if (numProductivity > 69) {
if (numProductivity > 199) {
bonus = BONUS_4;
}
else { // <= 199
bonus = BONUS_3;
}
}
else { // <= 69
bonus = BONUS_2;
}
}
else { // <= 30
bonus = BONUS_1;
}
}
else { // <= 0
bonus = 0;
}
但是看看这要难得多。
答案 1 :(得分:0)
不清楚 为什么 要将发布的代码转换为嵌套的if
,也不清楚发布的代码是否正确(对于例如,我假设BONUS_2和BONUS_3是有效的,因为您发布的代码将只有可见的BONUS_1和BONUS_4结果)。要嵌套它,首先要测试结果是否在预期范围内;然后测试子范围。喜欢
if (numProductivity > 0 && numProductivity < 200) {
if (numProductivity <= 30) {
bonus = BONUS_1;
} else if (numProductivity <= 69) {
bonus = BONUS_2;
} else {
bonus = BONUS_3;
}
} else {
bonus = BONUS_4;
}
答案 2 :(得分:-1)
不可能嵌套... 嵌套示例:
if( x == 30 ) {
if( y == 10 ) {
System.out.print("X = 30 and Y = 10");
}
}