我希望我的程序在用户输入除整数之外的任何内容时显示错误消息并将其循环回来

时间:2015-09-27 20:31:38

标签: java string exception if-statement int

我正在为我的CS类做一个项目并完成所有工作,除非用户在我要求高度时输入任何不是整数的东西,它会给出错误。 我不确定如何捕捉异常。 这是我的源代码片段。 我是初学者,我非常感谢你的帮助。

Alter table Course_section
Alter column CSectionID Number(2,2) PRIMARY KEY;

4 个答案:

答案 0 :(得分:2)

您正在将输入解析为整数,可能会发生异常。在try块中解析输入,在catch中你可以显示消息来输入一个数字。

答案 1 :(得分:0)

您需要实施异常处理

try { 
height = Integer.parseInt(JOptionPane.showInputDialog("What is your height? (48-84 inches or 114-213 centimeters) \nEnter whole numbers only."));
} catch (Exception e)
{
// this part gets executed when a non-int is given as input
//Print error message, etc
}

如果你想要,你也可以围绕这段代码构建一个while循环,只有在没有抛出异常的情况下才会中断它。

答案 2 :(得分:0)

您需要的是其中的func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool{ if let count = textField.text?.characters.count { if count < 5 { print("\(count)") return true } else { return false } } return true } loop块:

try..catch

答案 3 :(得分:0)

你已经有一个try / catch块,但它处于错误的水平。你需要将它包装在最初尝试解析整数的过程中,如下所示:

JOptionPane.showMessageDialog (null, "This program calculates tidal volume.", "Tidal Volume Calculator", JOptionPane.INFORMATION_MESSAGE);
name = JOptionPane.showInputDialog("What is your name?");

while (flag3 == true)
{
    sex = JOptionPane.showInputDialog("What is your sex?");

    if(sex.equalsIgnoreCase("male") || sex.equalsIgnoreCase("m"))
    {
        while (flag2 == true) 
        {
            try {
                height = Integer.parseInt(JOptionPane.showInputDialog("What is your height? (48-84 inches or 114-213 centimeters) \nEnter whole numbers only."));

                if(height <= 84 && height >= 48)
                {
                    malePbwInch = 50 + 2.3 * (height - 60);
                    JOptionPane.showMessageDialog(null, name + "'s predicted body weight is: " + malePbwInch);
                    flag2 = false;
                    flag3 = false;
                }
                if(height <= 213 && height >= 114)
                {
                    malePbwCm = 50 + .91 * (height - 152.4);
                    JOptionPane.showMessageDialog(null, name + "'s predicted body weight is: " + malePbwCm);
                    flag2 = false;
                    flag3 = false;
                }
                if(height > 84 && height < 114 || height < 48 || height > 213)
                {
                    JOptionPane.showMessageDialog(null, "Invalid height. Please try again.");
                }
            }
            catch(NumberFormatException e) {
                JOptionPane.showMessageDialog(null, "Invalid height. Please try again.");
            }
        }
    }
}

(请注意,以上内容未经测试,只需更改代码即可将try块移动到正确的位置。)