Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Hi, this is a pat of my program but even do is not required I want to add a part

ID: 3940755 • Letter: H

Question

Hi, this is a pat of my program but even do is not required I want to add a part where if the user enters a letter it gives them an error message and ask them to input a number, but is not working, It was working before, but I added another if so now is not working... Any help?? Thanks

public class randomWalk {
   public static Color color;
   public static Color lineColor;
   public static int steps = 0;

   //This is the main method gathers input from the user and then calls steps.
   public static void main(String[] args) {
       Scanner CONSOLE = new Scanner(System.in);
       int radius ;
       System.out.print("Please enter an integer for the radius of the circle (between 50 and 400): ");
       radius = CONSOLE.nextInt();
       while (!(radius >= 50 && radius <=400)) {
           if(radius < 50 || radius >400) {  
           System.out.println("Error: Radius entered is out of range");
           System.out.print("Please enter the radius of the circle (between 50 and 400): letter ");
           if (CONSOLE.hasNextInt( )) {
               radius = CONSOLE.nextInt();
           }
         } //This is the part that is not working
           else {
           String trash = CONSOLE.next( );
           System.out.print("Error: Input is not a number, enter a number between 50 and 400:");
           }
      }
  
       System.out.print("Please enter your circle color: (Red (r) or Blue (b)): ");
       CONSOLE.nextLine();
       String s = CONSOLE.nextLine();
     

Explanation / Answer

Please follow the code and comments for description :

CODE :

public class randomWalk {
public static Color color;
public static Color lineColor;
public static int steps = 0;

//This is the main method gathers input from the user and then calls steps.
public static void main(String[] args) {
Scanner CONSOLE = new Scanner(System.in);
int radius ;
System.out.print("Please enter an integer for the radius of the circle (between 50 and 400): ");
radius = CONSOLE.nextInt();
while (!(radius >= 50 && radius <=400)) {
if(radius < 50 || radius >400) {
System.out.println("Error: Radius entered is out of range");
System.out.print("Please enter the radius of the circle (between 50 and 400): letter ");
if (CONSOLE.hasNextInt( )) {
radius = CONSOLE.nextInt();
}
} //This is the part that is not working
else {
String trash = CONSOLE.next( );
System.out.print("Error: Input is not a number, enter a number between 50 and 400:");   
}
}
  
System.out.print("Please enter your circle color: (Red (r) or Blue (b)): ");
CONSOLE.nextLine();
String s = CONSOLE.nextLine();
     

OUTPUT :

Please enter an integer for the radius of the circle (between 50 and 400): a
Exception in thread "main" java.util.InputMismatchException
   at java.util.Scanner.throwFor(Scanner.java:864)
   at java.util.Scanner.next(Scanner.java:1485)
   at java.util.Scanner.nextInt(Scanner.java:2117)
   at java.util.Scanner.nextInt(Scanner.java:2076)
   at Chegg.randomWalk.main(randomWalk.java:26)
Java Result: 1


Descritpion :

nextInt() can only return an int if the InputStream contains an int as the next readable token.

If you want to validate input, you should use something like nextLine() to read a full String, and use Integer.parseInt(thatString) to check if it is an integer.

The method will throw a

NumberFormatException - if the string does not contain a parsable integer.


Hope this is helpful.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote