Java中的布尔和if/else语句帮助

Java中的布尔和if/else语句帮助,java,Java,我试图让用户输入一个输入(显然是他们的姓名和年龄),如果他们小于10岁或大于100岁,我希望它返回到开始,再次询问他们的年龄,直到满足条件,然后继续询问用户名。我知道怎么做,一个布尔值。我不知道如何在if/else语句中实现它。有人能帮我吗 public class Person { public static void main(final String[] args) { int age; String name; Scanner

我试图让用户输入一个输入(显然是他们的姓名和年龄),如果他们小于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 + "?");

    }
}
公共类人物{
公共静态void main(最终字符串[]args){
智力年龄;
字符串名;
扫描仪扫描=新扫描仪(System.in);
System.out.println(“输入您的年龄”);
age=scan.nextInt();
如果((年龄>=10岁)和&(年龄<18岁)){
System.out.println(“那么你是个孩子,是吗?”);
}否则,如果(年龄<10岁){
System.out.println(“你真的多大了?”);
}否则,如果((年龄>=18岁)和((年龄100岁){
System.out.println(“你真的多大了?”);
}
@抑制警告(“资源”)
扫描仪输入=新扫描仪(系统输入);
System.out.println(“输入您的姓名”);
name=in.nextLine();
System.out.println(“那么你是“+age+”岁,你的名字是“+name+”?”;
}
}
您需要一个循环:

boolean ageIsCorrect = false;
while (!ageIsCorrect) {
    // ask age, if the age is correct, set ageIsCorrect to true
}
您需要一个循环:

boolean ageIsCorrect = false;
while (!ageIsCorrect) {
    // ask age, if the age is correct, set ageIsCorrect to true
}
把它放在一个while循环中 while(年龄介于指定的临界值之间)

将其放入while循环中
while(年龄介于指定临界值之间)

在不满足条件时使用
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
    }
    // ...
}
boolean conditionMet=false;
while(!conditionMet){
// ...
否则,如果(年龄>=18&&age)退出循环
}
// ...
}

在不满足条件时使用
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
    }
    // ...
}
boolean conditionMet=false;
while(!conditionMet){
// ...
否则,如果(年龄>=18&&age)退出循环
}
// ...
}

只需在第一次扫描和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?");
    }
}
boolean validAge=false;
而(!有效期){
System.out.println(“输入您的年龄”);
age=scan.nextInt();
如果((年龄>=10岁)和&(年龄<18岁)){
System.out.println(“那么你是个孩子,是吗?”);
}否则,如果(年龄<10岁){
System.out.println(“你真的多大了?”);
}否则,如果((年龄>=18岁)和((年龄100岁){
System.out.println(“你真的多大了?”);
}
}

只需在第一次扫描和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?");
    }
}
boolean validAge=false;
而(!有效期){
System.out.println(“输入您的年龄”);
age=scan.nextInt();
如果((年龄>=10岁)和&(年龄<18岁)){
System.out.println(“那么你是个孩子,是吗?”);
}否则,如果(年龄<10岁){
System.out.println(“你真的多大了?”);
}否则,如果((年龄>=18岁)和((年龄100岁){
System.out.println(“你真的多大了?”);
}
}

大致如下:

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

}

大致如下:

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

}

你应该在
while
循环中这样做。我认为这比其他答案更简单、更好:

int age = 0;
while (age<10 || age>100){
    age = scan.nextInt();
}
string username = scan.next();
...
int-age=0;
而(100岁){
age=scan.nextInt();
}
字符串username=scan.next();
...

你应该在
while
循环中这样做。我认为这比其他答案更简单、更好:

int age = 0;
while (age<10 || age>100){
    age = scan.nextInt();
}
string username = scan.next();
...
int-age=0;
而(100岁){
age=scan.nextInt();
}
字符串username=scan.next();
...

由于正在循环,请将提示代码放入循环中。使用布尔值退出循环

boolean goodAnswer = false; do { System.out.println("Enter in your age."); ... if ((age >= 10) && (age 100) { ... // do not set goodAnswer, because the answer was not good } } while (!goodAnswer); 布尔值goodAnswer=false; 做 { System.out.println(“输入您的年龄”); ... 如果(年龄>=10岁)和(年龄100岁) { …//不要设置好答案,因为答案不好 }
}既然正在循环,请将提示代码放入循环中。使用布尔值退出循环

boolean goodAnswer = false; do { System.out.println("Enter in your age."); ... if ((age >= 10) && (age 100) { ... // do not set goodAnswer, because the answer was not good } } while (!goodAnswer); 布尔值goodAnswer=false; 做 { System.out.println(“输入您的年龄”); ... 如果(年龄>=10岁)和(年龄100岁) { …//不要设置好答案,因为答案不好 }
}而(!goodAnswer);您的代码实际上需要更好地封装以检查年龄

使用名为
isValidAge(age)
的方法返回
true
false
结果,然后您可以编写:

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...
}

一般来说,如果else()语句比较混乱,并且不能很好地扩展维护,那么它们并不总是最好的选择。

您的代码实际上需要更好地封装以检查使用期限

使用名为
isValidAge(age)
的方法返回
true
false
结果,然后您可以编写:

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...
}

一般来说,如果else()语句凌乱且不能很好地扩展-从维护角度来看,它们并不总是最佳选择。

您需要一个while循环,在该循环中,您可以检查年龄,并应提供帮助。您需要一个while循环,在该循环中,您可以检查年龄,并应提供帮助