我有一个班级任务要使用扫描仪读取数据。
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"); } }
最下面的部分是对我的测试,以检查是否一切正常。但是,虽然我已设置了while循环,但似乎不想继续运行一次以上。它会取一个值,然后如果我说是,我有更多的值(y或Y),它将退出并打印两个笨蛋
scan.nextLine()时,它将读取不等于Y或y的结束符。结果,它退出了while循环。像这样更正您的代码,只需更改您正在阅读doubel的一行即可:
while(more){ System.out.print("Please input purchase amount: "); purchase+=Double.parseDouble(scan.nextLine()); System.out.println(); System.out.print("Do you have any more purchases Y/N?: "); // scan.nextLine(); String any1=scan.nextLine(); System.out.println(); more = any1.equals("y") || any1.equals("Y");//Shortened :) }