1

我需要问三个级别的工资。1级必须至少65k,2级必须至少60k。1 级也必须至少是 2 级的 110%。2 级也必须至少是 3 级的 120%。我只从 1 级和 2 级开始,因为如果我能弄清楚,我就能弄清楚 3 级.这是我所拥有的:

    do {
        System.out.println("Please enter the full time employee payscale level 1 rate: ");
        fullTimePay1 = input.nextInt();
    } while (fullTimePay1 < 65000);

    do {
        System.out.println("Please enter the full time employee payscale level 2 rate: ");
        fullTimePay2 = input.nextInt();
        } while (fullTimePay2 < 60000);

    do {
        System.out.println("Please enter the full time employee payscale level 1 rate: ");
        fullTimePay1 = input.nextInt();
        System.out.println("Please enter the full time employee payscale level 2 rate: ");
        fullTimePay2 = input.nextInt();
    } while (fullTimePay1 < (fullTimePay2 * 1.1));

但它只是一遍又一遍地重复(我在这段代码之后有一个永远不会执行的打印语句)。谁能告诉我为什么,也许可以帮助我的代码?

4

1 回答 1

0

正如您的代码所示,当我输入例如 100000 和 70000 (两次)时,循环终止;您是否可能会混淆哪个值应该更大(或者连续尝试不止一次)?

您的代码将无法正常工作,因为您没有在第三个循环中进行 65k 和 60k 验证,并且您还要求每个输入两次而不是一次(输入正确时)(do-while 检查循环的条件,而不是之前(while循环会这样做),因此第三个循环将询问用户输入,而不管值是什么)。

用以下内容替换 3 个循环应该可以工作:

do {
  do {
    System.out.println("Please enter full time employee payscale level 1 rate:");
    fullTimePay1 = input.nextInt();
  } while (fullTimePay1 < 65000);
  do {
    System.out.println("Please enter full time employee payscale level 2 rate:");
    fullTimePay2 = input.nextInt();
  } while (fullTimePay2 < 60000);
} while (fullTimePay1 < (fullTimePay2 * 1.1));

但是,如果允许的话,仅验证第二个的 110% 对我来说更有意义:

do {
  System.out.println("Please enter full time employee payscale level 1 rate:");
  fullTimePay1 = input.nextInt();
} while (fullTimePay1 < 66000); // 'cause min(1) = 1.1*min(2) = 1.1*60000 = 66000
do {
  System.out.println("Please enter full time employee payscale level 2 rate:");
  fullTimePay2 = input.nextInt();
} while (fullTimePay2 < 60000 || fullTimePay1 < (fullTimePay2 * 1.1));
于 2013-04-11T08:33:34.690 回答