下面我试图总结用户输入的结果。程序运行正常,但是当它循环时,用户输入不会被添加。你能帮忙指出什么不对吗?
Scanner keyboard = new Scanner(System.in);
double NICKEL = .05;
double DIME = .10;
double QUARTER = .25;
//Other declarations
double coin = 0; //to hold input from user
double total = 0;
while(coin <= 1 ){
System.out.print("Insert coin: ");
coin = keyboard.nextDouble();
if(coin==NICKEL || coin==DIME || coin==QUARTER){
total += coin;
System.out.println("Amount entered: " +coin);
}
else{
System.out.println("Invalid!");
System.out.print("Insert coin: ");
coin = keyboard.nextDouble();
}
}
答案 0 :(得分:0)
你的问题在这里:
System.out.println("Amount entered: " +coin);
coin
应为total
。事实上,你永远不会打印total
的值,但它正在增加。
如评论中所述,此循环将继续,直到输入的硬币碰巧大于1
。
答案 1 :(得分:0)
您需要在循环结束时打印出总数。您当前正在输入硬币值,但是您需要在System.out.println("Total: " + total);
循环后的代码中的某处放置while
。
作为旁注,在else
块中,您再次调用coin = keyboard.nextDouble();
,但在循环结束之前永远不会使用该值。假设用户输入了无效值,只需通知错误即可。然后,当循环再次开始时,将设置硬币的值。
此外,它看起来像你的循环将永远运行。由于您始终将硬币值重置为NICKLE, DIME
或QUARTER
,因此循环将永不停止。那是个问题。从你的代码中,它看起来像你想要在用户输入总计至少一美元的值时停止循环。如果是这种情况,则while
循环条件应为while(total <= 1)
。
答案 2 :(得分:0)
首先你需要怀特数值。不是硬币价值。 System.out.println("Amount entered: " +total );
,
其次你的while循环可能会导致问题。当用户输入&gt; 1您的第二个输入调用运行coin = keyboard.nextDouble();
。如果再次用户输入&gt; 1虽然不起作用。首先检查,然后你必须分配硬币的价值。
你不需要再打电话coin = keyboard.nextDouble();
Scanner keyboard = new Scanner(System.in);
double NICKEL = .05;
double DIME = .10;
double QUARTER = .25;
//Other declarations
double coin = 0; //to hold input from user
double total = 0;
while(coin <= 1 ){
System.out.print("Insert coin: ");
double key = keyboard.nextDouble();
if(key==NICKEL || key==DIME || key==QUARTER){
coin = key;
total += coin;
System.out.println("Amount entered: " +total);
}
else {
System.out.println("Invalid!");
}
}