2017-04-20 174 views
-2

我已經看過每個人在哪裏合理的解釋,我怎樣才能解決這個問題。有人可以看我的代碼,並給我一些建議。異常在線程「主」java.util.NoSuchElementException無法找到我的情況的解決方案

這裏是我的代碼:

import java.util.Scanner; 

public class ShoppingCartManager { 

    public static void printMenu(ShoppingCart cart){ 
     Scanner read = new Scanner(System.in); 
     String input = " "; 

     /* String itemName = "none"; 
     String itemDescription = "none"; 
     int itemPrice = 0; 
     int itemQuantity = 0;*/ 

     System.out.println("MENU"); 
     System.out.println("a - Add item to cart"); 
     System.out.println("d - Remove item from cart"); 
     System.out.println("c - Change item quantity"); 
     System.out.println("i - Output items' descriptions"); 
     System.out.println("o - Output shopping cart"); 
     System.out.println("q - Quit"); 

     //ItemToPurchase shopCart = new ItemToPurchase(); 

     input = read.next(); 
     read.close(); 



     switch (input){ 

      case "q" : System.out.println("Quit"); 
      break; 
     } 

    } 

    public static void main(String[] args){ 
     Scanner read = new Scanner(System.in); 
     String customerName = "none"; 
     String todaysDate = "none"; 

     System.out.println("Enter the Customer's name: "); 
     customerName = read.nextLine(); 
     System.out.println("Enter Today's Date: "); 
     todaysDate = read.nextLine(); 
     ShoppingCart cart = new ShoppingCart(customerName, todaysDate); 


     System.out.println("Customer Name: " + cart.getCustomerName()); 
     System.out.println("Today's Date: " + cart.getDate()); 

     read.close(); 

     printMenu(cart); 



     return; 
    } 
} 

我得到的錯誤:在線程 「主要」 java.util.NoSuchElementException

異常

at java.util.Scanner.throwFor(Scanner.java:862) 
at java.util.Scanner.next(Scanner.java:1371) 
at ShoppingCartManager.printMenu(ShoppingCartManager.java:24) 
at ShoppingCartManager.main(ShoppingCartManager.java:54) 

回答

0

你的問題是在調用read.close()您的main方法。這不僅關閉了掃描儀,還關閉了System.in流。意思是說,無論何時您需要它(例如在您的printMenu方法中),它都不可用。

在你的情況下,close()調用是不必要的,你可以安全地刪除它。

+0

謝謝你的訣竅。現在我正在嘗試使用switch語句創建菜單,並且在執行選項後,我試圖讓菜單在執行後再次打印,因此我已將printMenu方法分配給該選項以查看它是否會執行菜單再次,現在它給了我相同的異常錯誤。 – Sam

+0

如果這爲你工作,請不要忘記upvote並接受這個答案。 –

+0

我做過了,但是因爲我從昨天起才成爲會員,所以不會反映投票。非常感激你的幫助。 – Sam

相關問題