Цикл программы Java не будет выполнять и запрашивать пользователя?

1

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

большое спасибо!

public class InventorySystem {

    public static void main(String[] args) {
        String[] newItemInfo = new String[1000];
        String[] itemDescription = new String[1000];
        int[] itemPrice = new int[1000];
        int choice;
        boolean isValid;
        int itemChoice;

        Scanner inputDevice = new Scanner(System.in);
        System.out.println("*****Raider Inventory System*****");
        System.out.println("1. Enter a new item");
        System.out.println("2. View Item Information");
        System.out.println("3. View a list of all items");
        System.out.println("9. End Program\n");
        System.out.println("Please enter your selection: ");
        choice = inputDevice.nextInt();

        if (choice == 1 || choice == 2 || choice == 3 || choice == 9) {
            isValid = true;
        } else {
            isValid = false;
        }

**      while (isValid = false) {
            System.out.println("Invalid entry, please enter either 1, 2, 3, or 9 for menu options.");
**      }

        for (int x = 0; x < 1000; ++x) {
            if (choice == 1) {
                System.out.println("Please enter the name if the item: ");
                newItemInfo[x] = inputDevice.nextLine();
                System.out.println("Please enter the item description: ");
                itemDescription[x] = inputDevice.nextLine();
                System.out.println("Please enter item price: ");
                itemPrice[x] = inputDevice.nextInt();
            }
        }

        if (choice == 2) {
            System.out.println("***Show item Description***");
            System.out.println("0. ");
            System.out.println("please enter the item number ot view details: ");
            itemChoice = inputDevice.nextInt();
        }

        if (choice == 3) {
            System.out.println("****Item List Report****");
        }

        if (choice == 9) {
            System.exit(0);
        }
    }
}
Теги:
arrays
loops
while-loop
prompt

2 ответа

1
Лучший ответ

Не делайте while (isValid = false). Вы устанавливаете его на false!

Вместо этого

while (!isValid) {

}

Кроме того, не делайте while (isValid == false) - этот уродливый код.

Далее, переменная isValid внутри цикла.

while (!isValid) {

   // get input from user in here

   // test input and check if is valid. If so, set isValid = true;

   // something must set isValid to true in here, else it will 
   // loop forever      
}

В противном случае вы застряли в бесконечном цикле. Урок, который нужно изучить здесь, - это мысленно пройти свой код так, как будто вы его запускаете в своем мозгу. Таким образом вы ломаете логические ошибки, как то, что у вас есть.

  • 0
    основанный на коде, код операции попадает в бесконечный цикл
  • 0
    @ KickButtowski: я знаю. Вот почему я предложил изменить isValid внутри цикла.
2

В вашей линии

while(isValid = false)

= не делает то, что, по вашему мнению, делает. В Java сингл = означает присваивание выражения с правой стороны переменной с левой стороны. Это не значит сравнивать обе стороны.

Поэтому вы должны написать следующее:

while (isValid == false)

Обратите внимание на double ==. Этот код работает, но вы можете написать его еще красивее:

while (!isValid)

! означает нет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню