Делать, пока не работает правильно - PullRequest
0 голосов
/ 11 мая 2018

Я делаю Java-программу для продуктового магазина, которая перечисляет варианты товаров и добавляет их в корзину в соответствии с пользовательскими данными. Он отлично работает для первого варианта, однако после этого программы работают неправильно. Кажется, я нигде не могу найти ошибку!

В идеале я хочу спросить:

Что бы вы хотели добавить в корзину? введите номер

(пользователь должен ввести номер)

сколько?

(введите номер пользователя)

Хотите добавить что-нибудь еще в корзину? (да / нет)

(введите y или n)

Обычно, когда пользователь вводит «1», он должен добавить его в корзину и т. Д., А затем спросить, хотят ли они добавить еще один элемент. Затем он печатает «что бы вы хотели добавить в корзину». Когда я ввожу другой номер товара, он возвращается к началу цикла while и печатает «что бы вы хотели добавить в корзину», вместо того, чтобы фактически добавить товар. как это происходит с первым пунктом.

Изображение вывода неисправного do while

enter image description here

Я также предоставил код:

do {        
    System.out.println("What would you like to add to your cart? Enter its corresponding number");
    choose = userin.nextInt();

    if(choose > 14) {
      System.out.println("please choose a valid option!"); 
      keepGoing = true;
    } else if(choose == 1) {
        System.out.println("how many?");    
        int quantity;
        quantity = userin.nextInt();
        cart1.addToCart(FoodItems.QUINOA, 7.00, quantity);      
    }
    System.out.print ("\nWould you like to add anything else to your cart (y/n)? ");
    keepShopping = userin.next();

    if(choose ==2) {
      System.out.println("What would you like to add to your cart? Enter its corresponding number");
      choose = userin.nextInt(); 
      System.out.println("how many?");  
      int quantity;
      quantity = userin.nextInt();
      cart1.addToCart(FoodItems.ORGEGG, 3.45, quantity);
    }
    System.out.print ("\nWould you like to add anything else to your cart (y/n)? ");
    keepShopping = userin.next();
    System.out.println("What would you like to add to your cart? Enter its corresponding number");
    choose = userin.nextInt();

    if(choose == 3) {
      System.out.println("how many?");  
      int quantity;
      quantity = userin.nextInt();
      cart1.addToCart(FoodItems.CCNTW, 2.99, quantity);
      System.out.print ("\nWould you like to add anything else to your cart (y/n)? ");
      keepShopping = userin.next();

    }
}
while (keepShopping.equals("y"));

  if(keepShopping.equals("n")) {
     System.out.println("\n");
     Register.talking();
  }
  System.out.println(cart1);
  keepGoing = false;
} 

1 Ответ

0 голосов
/ 11 мая 2018

Проблема в вашем коде в том, что вы не используете иначе, если.Таким образом, цикл не достигнет условия while, пока не выполнит весь регистр if.

Вот рабочий код.Я также реорганизовал ваш код, чтобы упростить его.

public class Cart {

    public static void main(String[] args) {

        Scanner userin = new Scanner(System.in);
        String keepShopping;
        int quantity;
        do {
            System.out.println("What would you like to add to your cart? Enter its corresponding number");
            int choose = userin.nextInt();

            if (choose > 14) {
                System.out.println("please choose a valid option!");
            }
            System.out.println("how many?");
            quantity = userin.nextInt();

            if (choose == 1) {
                cart1.addToCart(FoodItems.QUINOA, 7.00, quantity);
            }
            else if (choose == 2) {
                cart1.addToCart(FoodItems.ORGEGG, 3.00, quantity);
            }
            else if (choose == 3) {
                cart1.addToCart(FoodItems.CCNTW, 1.00, quantity);
            }
            System.out.print("\nWould you like to add anything else to your cart (y/n)? ");
            keepShopping = userin.next();
        } while (keepShopping.equals("y"));
        if (keepShopping.equals("n")) {
            System.out.println("\n");
        }
        System.out.println("");
    }

}

...