好的,所以我只是通过我的数组库存程序的一部分,但我的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);
}
}
}
答案 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
}
否则你将陷入无限循环。这里要学到的教训是精神上遍历你的代码,就像你在大脑中运行它一样。通过这种方式,您可以捕获像您所拥有的逻辑错误。