1
Scanner sc = new Scanner(System.in);
Boolean valid =  true;
do{
    valid = true;
    //get first name input and valid
    System.out.print("Enter your First Name > ");
    String firstName = sc.nextLine();
    if(firstName.trim().length() > 25){
        valid = false;
    }
    //get last name input and valid
    System.out.print("Enter your Last Name > ");
    String lastName = sc.nextLine();
    if(lastName.trim().length() > 25){
        valid = false;
    }
    //get email input and valid
    System.out.print("Enter your Email > ");
    String email = sc.nextLine();
    if(email.trim().length() > 40){
        valid = false;
    }
      ctrl.addPerson(email, firstName, lastName);

}while(valid == false);

ユーザーは無効な入力を求められ続けますが、無効なデータはまだ追加/保存されています(addPerson)。無効が保存される理由は理解できますが、ifを正しく使用するにはどうすればよいですか?お手伝いありがとう!


私は皆の提案と推奨事項を読みました。以下は編集されたコードです。うまくいけば、それはより良いです。

Scanner sc = new Scanner(System.in);
boolean valid =  true;
String firstName = null;
String lastName = null;
String email = null;
Date birthday = null;

        do{
            System.out.print("Enter your First Name > ");
            firstName = sc.nextLine();
        }while(firstName.trim().length() > 25);

        do{     
            System.out.print("Enter your Last Name > ");
            lastName = sc.nextLine();
        }while(lastName.trim().length() > 25);

        do{     
            System.out.print("Enter your Email > ");
            email = sc.nextLine();
        }while(email.trim().length() > 40);

        ctrl.addPerson(email, firstName, lastName);
4

1 に答える 1

2

addPersonメソッドを次のような条件に置く必要があります

if(valid) {
    ctrl.addPerson(email, firstName, lastName);
}

booleanまた、(の代わりに)プリミティブ型を使用することをお勧めしますBoolean。ここでそのオブジェクト表現を使用する理由はありません。

于 2013-01-26T17:21:25.557 に答える