创建一个简单的“购物车”程序

时间:2013-12-02 21:33:06

标签: java while-loop

我正在尝试使用ArrayList类创建购物车程序。我的问题是,一旦用户完成购物,我似乎无法弄清楚如何退出while循环。物品作为价格输入。以下是我的代码:

import java.util.Scanner;
import java.util.ArrayList;
**
* 
*/
public static void shoppingCart()
{
    Scanner inputReader = new Scanner(System.in);
    Scanner itemReader = new Scanner (System.in);
    System.out.print("Would you like to input items? (y/n)");
    String input = inputReader.next();
    ArrayList<Double> items = new ArrayList<Double>();
    while (!input.equals("y") && !input.equals("n"))
    {
        System.out.print("Sorry, we need a (y/n): ");
        input = inputReader.next();
    }

    while (input.equals("y"))
    {
        while (!items.equals("-1"))
        {
            System.out.print("Please enter an item price, or -1 to exit: $");
            items.add(itemReader.nextDouble());
        }
    }
}

4 个答案:

答案 0 :(得分:1)

您只需要从用户那里获得额外的输入:

while (input.equals("y"))
{
    while (!items.equals("-1"))
    {
        System.out.print("Please enter an item price, or -1 to exit: $");
        items.add(itemReader.nextDouble());
    }

    // get the user's input here and set the input variable with it.

}

我只使用一个与System.in绑定的扫描仪。我认为没有理由使用两个。

答案 1 :(得分:0)

现在你有比你真正需要更多的循环。尝试这样的事情。 当你运行这样的程序时,用户必须输入一个值来退出程序,这就是你的while循环应该基于什么,这样它将保持循环,直到提供关闭命令。

while(!input.equals("-1")){
    //do your stuff here..
    if(!input.equals("y") || !input.equals("n")){
        //Try again...
        //input check
    }else{
        //do your stuff here...
        //input check
    }
}
if(input.equals("-1"){
    //Exit...
}

答案 2 :(得分:0)

while (input.equals("y"))
{
    while (!items.get(items.size()-1).equals("-1"))
    {
        System.out.print("Please enter an item price, or -1 to exit: $");
        items.add(itemReader.nextDouble());
    }
}

if (input.equals("y"))
{
    while (!items.equals("-1"))
    {
        System.out.print("Please enter an item price, or -1 to exit: $");
        items.add(itemReader.nextDouble());
    }
}

应该这样做。

您只有“y”检查才能检查是否应该循环并接受输入。但是当你完成输入输入时,你不想循环并重新开始。 if语句就是你需要的所有内容。

答案 3 :(得分:0)

这段代码中有几个问题:

while (input.equals("y")) //input never changes in the loop so the loop will never end
    {
        while (!items.equals("-1")) //you're comparing ArrayList to a string. You need to 
        //compare list item (such as items.get(items.length()-1) to double (i.e. price)
        {
            System.out.print("Please enter an item price, or -1 to exit: $");
            items.add(itemReader.nextDouble());// there is no way to check what user 
            //entered because you add it to collection right away
        }
    }

你真正想要的是这样的:

if (input.eqals("y")) {
  while (true) {
    System.out.print("Please enter an item price, or -1 to exit: $");
    double price = itemReader.nextDouble();
    if (price < 0) {
     break;
    }
    items.add(price);
  }
}