0

ユーザーに入力 (名前と年齢はもちろん) を入力させようとしています。ユーザーが 10 歳未満または 100 歳以上の場合は、最初に戻ってもう一度年齢を尋ねます。条件が満たされていることを確認してから、ユーザー名を尋ねます。私はそれを行う方法を知っています、ブール値。どうすればよいかわからないのは、それを if/else ステートメントに実装することです。誰でも私を助けることができますか?

public class Person {

    public static void main(final String[] args) {

        int age;
        String name;

        Scanner scan = new Scanner(System.in);

        System.out.println("Enter in your age.");
        age = scan.nextInt();

        if ((age >= 10) && (age < 18)) {
            System.out.println("So you're a kid, huh?");
        } else if (age < 10) {
            System.out.println("How old are you really?");
        } else if ((age >= 18) && (age <= 100)) {
            System.out.println("So you're an adult, huh?");
        } else if (age > 100) {
            System.out.println("How old are you really?");
        }

        @SuppressWarnings("resource")
        Scanner in = new Scanner(System.in);

        System.out.println("Enter in your name");
        name = in.nextLine();

        System.out.println("So you're " + age + " years old and your name is " + name + "?");

    }
}
4

8 に答える 8

3

while条件が満たされていない間、ループを使用します。

boolean conditionMet = false;
while(!conditionMet) {
    // ...
    else if (age >= 18 && age <= 100) {
        System.out.println("So you're an adult, huh?");
        conditionMet = true;     // the condition is met => exit the loop
    }
    // ...
}
于 2013-04-04T13:10:34.473 に答える
1

最初の scan ステートメントと if ステートメントの周りに while ループを配置するだけです。

boolean validAge = false;
while (!validAge) {
    System.out.println("Enter in your age.");
    age = scan.nextInt();

    if ((age >= 10) && (age < 18)) {
        System.out.println("So you're a kid, huh?");
    } else if (age < 10) {
        System.out.println("How old are you really?");
    } else if ((age >= 18) && (age <= 100)) {
        System.out.println("So you're an adult, huh?");
        validAge = true;
    } else if (age > 100) {
        System.out.println("How old are you really?");
    }
}
于 2013-04-04T13:11:05.360 に答える
0

年齢を確認するには、実際にはコードをより適切にカプセル化する必要があります。

または結果isValidAge(age)を返すために呼び出されたメソッドを使用すると、次のように記述できます。truefalse

int age = 0;

while(!isValidAge(age)){

System.out.println("Please try again! Not a valid age (for an adult)");

... read in the age using scanner...
}

一般的に言えば、 if else () ステートメントはごちゃごちゃしていてうまく拡張できません - メンテナンスに関しては、常に最適なオプションとは限りません。

于 2013-04-04T13:47:43.007 に答える
0

ループが必要です:

boolean ageIsCorrect = false;
while (!ageIsCorrect) {
    // ask age, if the age is correct, set ageIsCorrect to true
}
于 2013-04-04T13:10:06.633 に答える
0

whileループ内に入れます(年齢は指定した基準の間にあります)

于 2013-04-04T13:10:16.777 に答える
0

おおよそ次のようなものです。

private static int  readAndCheck() {
    // read age and validate, upon failure return -1
}

public static void main(final String[] args) {

    int age = -1;
    while (age  == -1) { 
        age = readAndCheck();
    }

    System.out.println("So you're " + age + " years old and your name is " + name + "?");

}
于 2013-04-04T13:12:32.473 に答える
0

whileループでそれを行う必要があります。他の回答よりも簡単で優れていると思います:

int age = 0;
while (age<10 || age>100){
    age = scan.nextInt();
}
string username = scan.next();
...
于 2013-04-04T13:13:06.593 に答える
0

ループしているので、プロンプト コードをループに入れます。ブール値を使用してループを終了します

ブール値の良い答え = false;
行う
{
    System.out.println("年齢を入力してください。");
    ...
    if ((年齢 >= 10) && (100 歳)
    {
    ... // 答えが良くなかったので、goodAnswer を設定しないでください
    }
} ながら (!goodAnswer);
于 2013-04-04T13:13:15.700 に答える