I have a class assignment to read in data using Scanner.
import java.util.Scanner;
public class Project23
{
public static void main(String[] args)
{
// Declarations and instantiations.
Scanner scan = new Scanner(System.in);
String any = "";
boolean more = false;
double purchase = 0.0;
// Ask if user would like to run program?
System.out.print("Do you have any purchases? Y/N?: ");
// Ready value into string.
any = scan.nextLine();
System.out.println();
// If any is equal to y or Y it will set the value of more to true
// this runs the while statement below.
more = any.toUpperCase().equals("Y");
// While more is still true continue to run the code within the brackets.
while (more)
{
System.out.print("Please input purchase amount: ");
purchase += scan.nextDouble();
System.out.println();
System.out.print("Do you have any more purchases Y/N?: ");
any = scan.nextLine();
System.out.println();
more = any.toUpperCase().equals("Y");
}
if (purchase >= 2500)
System.out.println("Purchase >= 2500");
else
System.out.println("Purchase < 2500");
}
}
The bottom part is just there as a test for me to find out if everythign is running alright. However the while loop i have setup doesn’t seem to want to continue running more than once. It will take in one value, then if I say yes I have more values (y or Y) it will just exit and print either boobies
Basically what is happenning is ,
While you are reading double as scan.nextDouble(), you are reading only the double, however there would be ENDLINE character when you hit enter on the stream that is not read by scan.nextDouble().
So when you reach the any1=scan.nextLine(), it reads the endline character which does not equal to Y or y. As a result it exits the while loop.
correct your code like this, just make change one line where you are reading doubel :