My code is running fine at the beginning, but in the while loop, it won't prompt the user for the next input, and is just responding with no such element exception. I have tried fixing it for at least an hour, and have had no luck. Any tips on what might be wrong with it?
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);
}
}
results in:
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)
EDIT: Here are the other classes of the program:
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.");
}
}
}
Item Class:
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;
}
}