簡體   English   中英

Java中的布爾值和if / else語句幫助

[英]Boolean and if/else statement help in Java

我試圖讓用戶輸入一個輸入(顯然是他們的姓名和年齡),如果他們小於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 + "?");

    }
}

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

只需在您的第一次掃描和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 ageIsCorrect = false;
while (!ageIsCorrect) {
    // ask age, if the age is correct, set ageIsCorrect to true
}

將其放入while循環while(年齡介於指定的critiera之間)

大概是這樣的:

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();
...

由於正在循環,因此將提示代碼放入循環中。 使用布爾值退出循環

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

實際上,您的代碼需要更好地封裝以檢查使用期限。

使用名為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...
}

一般來說,如果else()語句混亂且不能很好地擴展-從維護角度來看,它們並不總是最佳選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM