如何在while循环-JAVA中汇总用户输入

时间:2016-03-23 22:52:11

标签: 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;

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();
    }
}

3 个答案:

答案 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, DIMEQUARTER,因此循环将永不停止。那是个问题。从你的代码中,它看起来像你想要在用户输入总计至少一美元的值时停止循环。如果是这种情况,则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!");
            }
        }