0

私はJavaが初めてです。ユーザーが一連のランダムな文字など、不要なものを入力した場合にシステム全体でエラーが発生するのではなく、エラーを表示できるようにするコードをいじっています。ブール値を使用したいのですが、どこから始めればよいかわかりません。私はintのtryとcatchを使用しましたが、ブール値をどうするかわかりません。equalsIgnoreCase と言われたのですが、どこに追加すればよいかわかりません。助けていただければ幸いです。

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");          

    }
}

私がいじっているのは...

String bday = "0";
String str1 = "true";
String str2 = "false";

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


  boolean bage = bday.equalsIgnoreCase(str1);
  boolean bage2 = bday.equalsIgnoreCase(str2);

if (bage == true){
    iage += 1;
    JOptionPane.showMessageDialog(null, "You are now " + iage);
4

2 に答える 2

1

Boolean#parseBoolean()を単独で使用しても、文字の検証には機能しません。falseこれは、評価されない文字列が返されるためですtrue(もちろん大文字と小文字は無視されます)。falseそのため、解析例外をスローする代わりに、ジャンク文字についても返されます。

したがって、 を使用して、ユーザーが 2 つの値のいずれかを入力したことを検証する必要がありbdayますequalsIgnoreCase():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!");
}
于 2013-07-19T00:41:40.983 に答える
0

JOptionPane についてはよくわかりませんが、ざっと見てみると、おそらく「InputDialog」ではなく「ConfirmDialog」を使用する必要があることがわかります。これにより、解析する必要がある String の代わりに int 0,1 値が得られるはずです。

http://docs.oracle.com/javase/7/docs/api/javax/swing/JOptionPane.html#showConfirmDialog(java.awt.Component, java.lang.Object)

于 2013-07-19T00:37:11.743 に答える