我的代碼在開始時運行良好,但在while循環中,它不會提示用戶輸入下一個輸入,並且只是響應而沒有此類元素異常。我試圖修復它至少一個小時,並沒有運氣。任何提示可能是錯誤的嗎?NoSuchElementException第一次迭代後在while循環中中斷?
public class Inventory {
public static void main(String[] args) {
Store store = new Store();
String itemName;
System.out.println("Welcome to the Inventory Application. You can add an item, display the stock for an item, or discontinue an item.");
boolean condition = true;
Scanner s = new Scanner(System.in);
do{
System.out.println("Please select an option and type the option number." + "\n 0. Quit \n 1. Add an item \n 2. Display stock for an item \n 3. Discontinue an item");
String choice = s.next();
if(choice.equals("0")){
System.out.println("Thank you for using the Sports Inventory Application. Good bye.");
condition = false;
System.exit(0);
}
else if(choice.equals("1")){
store.addItem();
}
else if(choice.equals("2")){
System.out.println("Item Name: ");
itemName = s.nextLine();
store.displayItem(itemName);
}
else if(choice.equals("3")){
System.out.println("Item Name: ");
itemName = s.nextLine();
store.deleteItem(itemName);
}
}
while(condition == true);
}
}
結果:
Welcome to the Inventory Application. You can add an item, display the stock for an item, or discontinue an item.
Please select an option and type the option number.
0. Quit
1. Add an item
2. Display stock for an item
3. Discontinue an item
1
Item Name:
test
Item Amount:
120
Item added. Information: test
Current amount in inventory is: 120
Please select an option and type the option number.
0. Quit
1. Add an item
2. Display stock for an item
3. Discontinue an item
java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at Inventory.main(Inventory.java:24)
編輯:這裏是其他類的程序:
import java.util.ArrayList;
import java.util.Scanner;
public class Store {
private ArrayList<Item> inventory;
public Store(){
inventory = new ArrayList<Item>();
}
public void addItem(){
Item newItem;
int itemAmount;
String itemName;
Scanner input = new Scanner(System.in);
System.out.println("Item Name: ");
itemName = input.nextLine();
System.out.println("Item Amount: ");
itemAmount = input.nextInt();
newItem = new Item(itemName, itemAmount);
inventory.add(newItem);
System.out.println("Item added. Information: " + inventory.get(0));
input.close();
}
public void deleteItem(String itemName){
int itemIndex;
Item itemToDelete;
itemToDelete = new Item(itemName);
itemIndex = inventory.indexOf(itemToDelete);
if(itemIndex > -1){
inventory.remove(itemIndex);
}
else{
System.out.println("Item does not exist.");
}
}
public void displayItem(String itemName){
int itemIndex;
Item itemToDisplay, item;
itemToDisplay = new Item(itemName);
itemIndex = inventory.indexOf(itemToDisplay);
if (itemIndex > -1){
item = inventory.get(itemIndex);
System.out.println(item);
}
else{
System.out.println("Item does not exist.");
}
}
}
項目類:
public class Item {
private int itemAmount;
private String itemName;
public Item(String name, int amount){
this.itemName = name;
this.itemAmount = amount;
}
public Item(String name){
itemAmount = 0;
this.itemName = name;
}
public int getItemAmount(){
return itemAmount;
}
public String getItemName(){
return itemName;
}
public String getItem(){
return itemName + itemAmount;
}
@Override
public String toString(){
String itemString;
itemString = this.itemName + "\n";
itemString += "Current amount in inventory is: " + this.itemAmount;
return itemString;
}
}
任何堆棧跟蹤? –
java.util.NoSuchElementException \t在java.util.Scanner.throwFor(Scanner.java:862) \t在java.util.Scanner.next(Scanner.java:1371) \t在Inventory.main(Inventory.java :24) – CoderPerson
@SteveSmith我把它添加到文章 – CoderPerson