【问题标题】:Exception in thread "main" java.util.NoSuchElementException can't find a solution to my case线程“main”中的异常 java.util.NoSuchElementException 找不到我的案例的解决方案
【发布时间】:2017-04-20 21:21:49
【问题描述】:

我已经向每个人寻找了关于如何解决问题的合理解释。有人可以看看我的代码并给我一些建议。

这是我的代码:

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)

【问题讨论】:

    标签: java input java.util.scanner main nosuchelementexception


    【解决方案1】:

    您的问题是在您的 main 方法中调用 read.close()。这不仅会关闭 Scanner,还会关闭 System.in 流。这意味着任何时候您需要它(例如在您的 printMenu 方法中),它都不可用。

    在您的情况下,close() 调用根本是不必要的,您可以安全地删除它。

    【讨论】:

    • 谢谢你成功了。现在我正在尝试使用 switch 语句创建一个菜单,并且在执行一个选项后我试图让菜单在执行后再次打印,所以我已经将 printMenu 方法分配给该选项以查看它是否会执行菜单再次,现在它给了我同样的异常错误。
    • 如果这对你有用,请不要忘记投票并接受这个答案。
    • 我做到了,但由于我从昨天开始才成为会员,因此不会反映投票。非常感谢您的帮助。
    猜你喜欢
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    相关资源
    最近更新 更多