我的头衔并不是最好的,但我不确定如何命名我正在尝试做的事情。无论哪种方式,我都有一个案例切换...
switch (input) {
case "A":
Item item = new Item();
System.out.print("Enter a barcode: ");
barCode = scan.nextLine();
item.setBarCode(barCode);
if (store.addItem(barCode)) {
System.out.println(store.stockedItems.get(barCode).getProductName()
+ " has been added to the store's inventory");
}
else {
item.setQuantity(1);
System.out.print("Enter the item's name: ");
productName = scan.nextLine();
productName = productName.toLowerCase();
item.setProductName(productName);
store.stockedItems.put(barCode, item);
System.out.println(store.stockedItems.get(barCode).getProductName()
+ " has been added to the store's inventory");
}
break;
}
这只是一种情况。这样做是当用户选择 A 将对象添加到我的数据结构中时,它会确定提到的条形码是否已在使用中。
如果是,它只会增加我的数据结构中对象的数量。
如果条码未使用并检查其有效性后。它将提示用户输入对象的名称,然后继续将其添加到我的数据结构中。
现在的问题是在我输入条形码字符串并在其各自的对象类中调用 setter 函数之后:
public void setBarCode(String code) {
if (!code.matches("[0-9]+") || code.length() != 12) {
System.out.println("The barcode entered is not in valid format. Entry ignored.");
} else {
barcode = code;
}
}
这个函数只是确保它是数字和 12 个字符长。如果不是,我想忽略该条目并从菜单重新开始。我遇到的问题是,即使条形码无效且未设置,程序也会继续询问项目名称。
如何跳过所有这些并再次打印菜单?