Imminence
Imminence

Reputation: 49

How would I use a while loop to keep requesting user input

I've tried a couple of things with the while loop and can't seem to get it to work. I want to keep requesting user input until the user inputs the number 0, here is the code I have so far:

import java.util.*;

public class Task10 {

    public static void main(String[] args) {
        System.out.println("Enter a year to check if it is a leap year");
        Scanner input = new Scanner(System.in);
        int year = input.nextInt();

        if ((year % 4 == 0) || ((year % 400 == 0) && (year % 100 != 0)))
            System.out.println(year + " is a leap year");
        else
            System.out.println(year + " is not a leap year");
    }
}

Upvotes: 4

Views: 85058

Answers (4)

Deep Narayan Kumar
Deep Narayan Kumar

Reputation: 1

Simple and best

Scanner sc=new Scanner(System.in);

while(sc.hasNextInt()){ int year = input.nextInt();

    if ((year % 4 == 0) || ((year % 400 == 0) && (year % 100 !=0)))
        System.out.println(year + " is a leap year");
    else
        System.out.println(year + " is not a leap year");

}


Until you enter a valid input , the loop will contionue

Upvotes: -1

vish4071
vish4071

Reputation: 5287

Use a while loop above input line as:

 while(true)

And, use if condition to break.

if(year == 0)
    break;

Also, condition for leap year is wrong in your code. It should be:

if((year % 100 == 0 && year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
    //its a leap year
else
    //its not

PS: As in comments, I'll give a complete code:

import java.util.*;

public class Task10 {

public static void main(String[] args) {
    System.out.println("Enter a year to check if it is a leap year");
    while(true){
    Scanner input = new Scanner(System.in);
        int year = input.nextInt();
        if(year == 0)
            break;
        if((year % 100 == 0 && year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
            System.out.println(year + " is a leap year");
        else
            System.out.println(year + " is not a leap year");
    }
}

}

Upvotes: 9

Saif Asif
Saif Asif

Reputation: 5668

You need to do something to keep you input loop running until a stopping condition is encountered (which in your case is that when the user inputs 0)

// First get the scanner object with the input stream
Scanner sc = new Scanner(System.in); 

// Just using do-while here for no reason, you can use a simple while(true) as well
do{
    int input = sc.nextInt();  // read the next input
    if (int == 0) { // check if we need to exit out
        // break only if 0 is entered, this means we don't want to run the loop anymore
        break;
    } else {
        // otherwise, do something with the input
    }
} while(true); // and keep repeating

Upvotes: 3

NightsWatch
NightsWatch

Reputation: 467

You should place your input taking code inside a while loop aned execute while loop untill year is 0 or lesser.

public static void main(String[] args) {
        int year = 1;
        while(year > 0)
        {
            System.out.println("Enter a year to check if it is a leap year");
            Scanner input = new Scanner(System.in);
            year = input.nextInt();
            if ((year % 4 == 0) || ((year % 400 == 0) && (year % 100 != 0)))
                System.out.println(year + " is a leap year");
            else
                System.out.println(year + " is not a leap year");
        }


    }

Upvotes: 0

Related Questions