简体   繁体   中英

How to make a number invalid

Create a new program called minusSentinel2.

Prompt the user to enter whole numbers between 1 and 100. Allow the user to enter as many numbers as desired.

If an invalid number is entered, print "Invalid entry." Prompt the user again until a valid number is entered.

Once -1 is entered, the program stops and prints the largest number entered with the text "The largest number entered is: "

I am having some trouble on the "Invalid entry." part. When I type a number greater than 100, "Invalid entry." does not get printed. How do I fix this? Thank you!

import java.util.*;
public class minusSentinel2
{
    public static void main (String[] args)
    {
        Scanner console = new Scanner(System.in);
        System.out.println("Enter a number between 1-100 (type -1 to quit):");
        int number = console.nextInt();
        int max = number;
        if (number < 1 && number > 100)//chekcs if value is valid
        {
            System.out.println("Invalid entry.");
            System.out.println("Enter a number between 1-100 (type -1 to quit).");
            console.next();
        }
        while (number != -1)
        {
            number = console.nextInt();
            if (number > max)
            {
                max = number;
            }
        }
        System.out.print("The largest number entered is: " + max);
    }
}

Firstly, I suggest you to don't copy and paste what we ask you to do, and just reformulates with only necessary parts for us.

For your issue, this condition is wrong:

if (number < 1 && number > 100)

It correspond to "lower than 1 and bigger than 100".

So, instead of && (and) operator, use || (or) operator like that :

if (number < 1 || number > 100) {
   // it's not valid because lower than 1 or greater than 100
}

Finally, what you are doing seems to have another issue. If you enter an invalid number, it will ask again only one time, and not same the new value. So, I suggest you to use while loop like that :

int number = 0;
while(number < 1 || number > 100) {
    number = console.nextInt();
    if (number < 1 || number > 100) {
        System.out.println("Invalid entry.");
        System.out.println("Enter a number between 1-100 (type -1 to quit).");
    }
}
int max = number;

To conclude, this is the full code:

Scanner console = new Scanner(System.in); // create scanner
int number = 0; // create new variable that will be used outside of while loop
while (number < 1 || number > 100) { // while the number isn't valid
    System.out.println("Enter a number between 1-100 (type -1 to quit):");
    number = console.nextInt(); // wait for user input
    if (number == -1) { // stop program
        console.close();
        return;
    } else if (number < 1 || number > 100) { // number invalid
        System.out.println("Invalid entry.");
    }
}

System.out.println("Now enter all number that you want. End with -1.");

int max = number; // create new max value
while (number != -1) {
    number = console.nextInt();
    if (number < 1 || number > 100) { // number invalid
        System.out.println("Invalid entry.");
    } else if (number > max) { // if number is upper than current one
        max = number;
        // here you can do something like that:
        // System.out.println("New max value: " + max);
    } else {
        // the value is value but not upper than current one, so we can write:
        // System.out.println("This value isn't upper to " + max);
    }
}
System.out.print("The largest number entered is: " + max);
console.close();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM