Java 如何对while循环中的用户输入求和

Java 如何对while循环中的用户输入求和,java,if-statement,while-loop,Java,If Statement,While Loop,下面我将尝试总结用户输入的结果。程序运行良好,只是当它循环时,用户输入不会被添加。你能指出什么是不正确的吗 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; w

下面我将尝试总结用户输入的结果。程序运行良好,只是当它循环时,用户输入不会被添加。你能指出什么是不正确的吗

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();
    }
}
扫描仪键盘=新扫描仪(System.in);
双镍=.05;
双一角=0.10;
双季=.25;
//其他声明
双币=0//保存用户的输入
双倍合计=0;
而(coin您的问题在于:

System.out.println("Amount entered: " +coin);
coin
应该是
total
。实际上,您从未打印出
total
的值,但它正在增加


如注释中所述,此循环将继续,直到输入的硬币恰好大于
1

您需要在循环结束时打印出总数。您当前正在打印输入的硬币值,但您需要输入
System.out.println(“总数:+total”);
while
循环之后的代码中的某个地方

作为旁注,在
else
块中,您再次调用
coin=keyboard.nextDouble();
,但在循环结束之前,该值将永远不会被使用。假设用户输入无效值,仅通知他们错误就足够了。然后,当循环再次启动时,coin的值将被设置


此外,在我看来,您的循环将永远运行。因为您总是将硬币的值重置为
五分镍币、一角镍币或
四分之一镍币,循环将永远不会停止。这是一个问题。从您的代码来看,在我看来,当用户输入的值总和至少为一美元时,您希望停止循环。如果是这样,则
while
循环条件应为
while(total首先需要的是wright amount value,而不是硬币值。
System.out.println(“输入的金额:+total”);

其次,while循环可能会导致问题。当用户输入>1时,您的第二次输入调用运行
coin=keyboard.nextDouble();
。如果用户在不工作时再次输入>1。请先检查,然后您必须分配硬币的值。 您不需要再次调用
coin=keyboard.nextDouble();

扫描仪键盘=新扫描仪(System.in);
双镍=.05;
双一角=0.10;
双季=.25;
//其他声明
double coin=0;//用于保存用户的输入
双倍合计=0;

while(硬币兑换
while(硬币)你怎么知道输入不是加法?你不在任何地方打印总数。使用你的调试器来诊断这样简单的问题:你会节省几个月的宝贵生命。你能更详细地解释一下你想做什么吗?你怎么知道总数不包含你的总和?你试过调试你的应用程序吗?你应该uld在while循环
coin
正确后打印
total
。OP显示的是输入的值,而不是总数is@Ascalonian没有证据表明。“输入的金额”可能是一个总金额或最近的“硬币”。但是,很明显,OP认为总金额应该出现在……某个地方。and这是目前唯一可能发生这种情况的地方。“输入”一词不是意味着输入的值,而不是统计的金额吗?不管怎样,您都是正确的-
total
需要显示。OP应该在while循环后打印出来。@Ascalonian取决于您对“输入”的解释。是吗“在程序的最后一个循环中输入的金额”或“程序执行期间迄今为止输入的金额”?
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!");
            }
        }