0

すべてが意図したとおりに機能しているはずですが、InputMismatchException エラーが発生します。ユーザーが int 値 (setAge) を入力する必要がある場合にのみ、エラーが発生します。なんで?

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);

    Withdraw myAccount = new Withdraw();

    Customer Jack = new Customer();
    out.println("Enter your full name");
    String FullName = keyboard.next();
    Jack.setName(FullName);

    out.println("Enter your address");
    String Address = keyboard.next();
    Jack.setAddress(Address);

    // I GET THE ERROR IN THE LINES BELOW.
    out.println("Enter your age");
    int age = keyboard.nextInt();
    Jack.setAge(age);

Customer クラスのコードは次のとおりです。

public class Customer {

String name;
String address;
int age;

public void setName(String NameIn) {
    name = NameIn;
}

public String getName() {
    return name;
}

public void setAddress(String addressIn) {
    address = addressIn;
}

public String getAddress() {
    return address;
}

public void setAge(int ageIn) {
    age = ageIn;
}

public int getAge() {
    return age;
}

よろしくお願いします!

4

2 に答える 2

2

デフォルトでnextは、空白を単語の区切り文字として使用するため、これらの文字を含むアドレスは、入力が次のScanner入力ステートメントに渡されます。つまりnextInt、この場合です。

したがってnextLine、行入力全体を読み取る which を使用します。

String address = keyboard.nextLine();

fullNameその変数に空白が存在する場合にも同じことが必要になります。

余談: Java の命名規則では、変数は小文字で始まることが示されています(例:addressfullName.

于 2013-10-31T12:35:32.963 に答える