我有一个类分配来使用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");
}
}
Run Code Online (Sandbox Code Playgroud)
底部就是我的测试,以确定每个标志是否正常运行.然而我设置的while循环似乎不想继续运行多次.它将采用一个值,然后如果我说是我有更多的值(y或Y)它将退出并打印任何鲣鸟
基本上发生的事情是,当您正在读取double.inxtDouble()时,您只读取double,但是当您在scan.nextDouble()未读取的流上按Enter键时会出现ENDLINE字符.因此,当您到达any1 = scan.nextLine()时,它会读取不等于Y或y的结束字符.结果它退出while循环.像这样纠正你的代码,只需在你读正文的地方换一行:
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 :)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
706 次 |
| 最近记录: |