我正在尝试使用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());
}
}
}
答案 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);
}
}