使用equalsIgnoreCase在java中显示错误的方法

使用equalsIgnoreCase在java中显示错误的方法,java,Java,我是java新手。我正在修改一些代码,允许它显示一个错误,而不是当用户输入它不想要的东西时,整个系统都会出错,比如一堆随机字母。我想用布尔语,但我不知道从哪里开始。我使用了try-and-catch的int,但我不确定如何处理布尔值。有人告诉我一个相等信号的情况,但我不知道在哪里添加它。非常感谢您的帮助 import javax.swing.JOptionPane; public class bday { public static void main(String[] args)

我是java新手。我正在修改一些代码,允许它显示一个错误,而不是当用户输入它不想要的东西时,整个系统都会出错,比如一堆随机字母。我想用布尔语,但我不知道从哪里开始。我使用了try-and-catch的int,但我不确定如何处理布尔值。有人告诉我一个相等信号的情况,但我不知道在哪里添加它。非常感谢您的帮助

import javax.swing.JOptionPane;

public class bday
{
    public static void main(String[] args)
    {
        String age = "0";

        age = JOptionPane.showInputDialog("What was your age yesterday?");

        int iage = 1;

        try
        {
            iage = Integer.parseInt(age);
        }
        catch(Exception e)
        {
            JOptionPane.showMessageDialog(null, "Thanks a lot, you broke it. CYA later.");
            return;
        }   

        String bday = "0";

         bday = JOptionPane.showInputDialog("Was yesterday your B-Day? (True or False)");


         try
         {
             bage = Boolean.parseBoolean(bday);
         }
         catch (Exception e)
         {
            JOptionPane.showMessageDialog(null, "WHY U MESS UP PROGRAM???.... BYE BYE!!");
            return;
         }

        if (bage == true){
            iage += 1;
            JOptionPane.showMessageDialog(null, "You are now " + iage);
        }
        else if (bage == false){
            JOptionPane.showMessageDialog(null, "Happy unbirthday!");
        }
        if (iage ==10){
            JOptionPane.showMessageDialog(null, "Congrats, double digits!");
        }
        if (iage >19){
            JOptionPane.showMessageDialog(null,  "U aint a Teenager");
        }
        else if (iage < 13)
            JOptionPane.showMessageDialog(null,  "U aint a Teenager");          

    }
}

我真的不知道JOptionPane,但快速查看一下,您可能应该使用“ConfirmDialog”而不是“InputDialog”。这将得到一个int 0,1值,而不是需要解析的字符串

单独使用无法验证字符,因为对于计算结果不为
true
(当然忽略大小写)的任何字符串,它都会返回
false
。因此,对于垃圾字符,它也会返回
false
,而不是抛出解析异常

因此,您需要使用
equalsIgnoreCase()
测试
bday
,以验证用户是否输入了以下两个值之一:
true
false
。这不再需要您处理异常,因此现在不需要使用
try-catch

if (bday.equalsIgnoreCase("true") || bday.equalsIgnoreCase("false")) {
    bage = Boolean.parseBoolean(bday);
} else {
    JOptionPane.showMessageDialog(null, "Invalid choice: Enter true or false.");
    return;
}

if (bage){ // bage == true is unnecessary
    iage += 1;
    JOptionPane.showMessageDialog(null, "You are now " + iage);
} else { // no need to check the condition again
    JOptionPane.showMessageDialog(null, "Happy unbirthday!");
}

我不确定我是否理解你的意思,你想避免多个
作业窗格…
?对不起,我的意思是,例如,如果用户回答“sfdsfd”是昨天你的工作日,它会打印出一条类似“无效字符”的消息所以我想把equalsIgnoreCase和布尔函数一起使用,然后用if-else语句。我建议你们关掉电脑,拿一支铅笔和一张纸。用英语一步一步地写下你想让程序做什么。当你清楚地理解了你想要采取的步骤后,翻译成Java代码就变得容易了。谢谢你的帮助和帮助
if(bage==true)
应该被替换,就好像(bage)@nachokk不是我的代码伙伴一样。我只注意到没有必要再次检查
if
else,因此将其删除。@user2593789,也请注意上面nachokk的评论,并查看
if else
块如何写入我的答案中。因为,
else
只会在条件失败时触发,无需再次检查。还要检查
bday
是否可以为
null
if (bday.equalsIgnoreCase("true") || bday.equalsIgnoreCase("false")) {
    bage = Boolean.parseBoolean(bday);
} else {
    JOptionPane.showMessageDialog(null, "Invalid choice: Enter true or false.");
    return;
}

if (bage){ // bage == true is unnecessary
    iage += 1;
    JOptionPane.showMessageDialog(null, "You are now " + iage);
} else { // no need to check the condition again
    JOptionPane.showMessageDialog(null, "Happy unbirthday!");
}