2013-04-11 66 views
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)); 

,但它只是重复一遍又一遍(我有这样的代码从未执行后打印语句)。任何人都可以告诉我为什么,也许可以帮助我的代码?

+0

我将在调试器中遍历您的代码,以便了解您的程序在做什么。我本以为你只想要一个循环,一旦你有正确的答案,你就不想再问。 – 2013-04-11 08:25:23

+0

什么是输入,下一个int来自哪里?你为什么重复获得下一个int? – 2013-04-11 08:26:28

+0

这不是我的整个代码,只是不能正常工作的部分。 – Chara 2013-04-11 08:28:24

回答

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)); 
+0

谢谢你,你的第一个解决方案完美无缺! – Chara 2013-04-11 09:19:51