2016-04-14 91 views
0

我正在为我的班级做一个年级平均脚本,我无法计算如何让我的交叉检查部分重复,直到我有一个有效值(代码如下所示)。运行时,如果原始输入无效,但只能执行一次,则允许我进行更正。我如何才能循环,直到我得到正确的回应?提前致谢!创建复查if语句

if (grade1 >= 0 && grade1 <= 100) 
    System.out.println("First grade valid.\n"); 
    else 
    { 
     System.out.println("Grade invalid. Re-enter first grade:"); 
     grade1 = kb.nextDouble(); 
    } 

回答

1

考虑

grade = -1; 
System.out.println("Enter a grade:\n"); 
grade1 = kb.nextDouble(); 
if (grade1 >= 0 && grade1 <= 100) 
{ 
    System.out.println("First grade valid.\n"); 
} 
else 
{ 
    while (grade1 < 0 || grade1 > 100) 
    { 
     System.out.println("Grade invalid. Re-enter first grade:"); 
     grade1 = kb.nextDouble(); 
    } 
} 
+0

只是去尝试编辑和它否定重新进入的能力。 – Dayeo78

+0

你应该在循环中有重入代码。请张贴循环显示您如何用FredK的建议重构它。只是发布“它不起作用”不能为任何人提供足够的信息来帮助你。 –

+0

完美,这就是我一直在寻找的!谢谢您的帮助! – Dayeo78

0

试试这个:

while ((grade = Integer.parseInt(JOptionPane.showInputDialog("Enter a grade"))) < 0 || grade > 100) { 
    System.out.println("Invalid grade of: " + grade); 
} 

它不处理信件很好不过,如果你输入 “A” ITLL抱怨,你

0

甜心吆喝,作为最初执行的方法,我进行了设置,以便用户在输入后插入输入并交叉检查其有效性ered(见下面的第一段摘录)。如果我能够主动交叉检查初始输入(见下面第二段摘录),最好节省空间。卢布洛克,我明白你在做什么,这是我的一个小小的疏忽。从现在起,我的反应会更好。

//交叉检查

if (grade1 >= 0 && grade1 <= 100) 
    System.out.println("First grade valid.\n"); 
    else 
    { 
     System.out.println("Grade invalid. Re-enter first grade:"); 
     grade1 = kb.nextDouble(); 
    } 

//入门级

grade1 = kb.nextDouble(); 
    while (grade1 < 0 || grade1 > 100) 
    { 
    System.out.println("Entered grade is invalid. Re-enter grade:"); 
    grade1 = kb.nextDouble(); 
    } 
0
try (Scanner scanner = new Scanner(System.in)) { 
    System.out.println("Enter a grade:\n"); 
    double grade1 = scanner.nextDouble(); 
    if (grade1 >= 0 && grade1 <= 100) 
    { 
     System.out.println("First grade valid.\n"); 
    } 
    else 
    { 
     while (grade1 < 0 || grade1 > 100) 
     { 
      System.out.println("Grade invalid. Re-enter first grade:"); 
      grade1 = scanner.nextDouble(); 
     } 
    } 
}