嵌套If语句

时间:2019-11-13 16:51:37

标签: java if-statement nested

您如何将以下内容转换为嵌套 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;

3 个答案:

答案 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");
         }
      }