Java Program Loop不会执行和提示用户?

时间:2014-11-28 23:02:39

标签: java arrays loops while-loop prompt

好的,所以我只是通过我的数组库存程序的一部分,但我的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);
        }
    }
}

2 个答案:

答案 0 :(得分:2)

在你的行

while(isValid = false)

=没有按照您的想法行事。在Java中,单个=表示将右侧的表达式分配给左侧的变量意味着比较双方。

所以你应该写这个:

while (isValid == false)

请注意双==。这段代码有效,但你可以写得更漂亮:

while (!isValid)

!表示

答案 1 :(得分:1)

不要while (isValid = 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      
}

否则你将陷入无限循环。这里要学到的教训是精神上遍历你的代码,就像你在大脑中运行它一样。通过这种方式,您可以捕获像您所拥有的逻辑错误。