Java异常错误导致代码突然停止

Java exception error causing code to stop suddenly

我正在为 class 做一个项目,一切正常,直到教授给我们的代码会提示用户 "doOver" 如果他们愿意,代码会出现这个错误,坦率地说我很困惑。

我尝试将 sc.nextLine 更改为我在其他帖子中看到的 .hasNextLine,但它出现了一个错误,指出它需要是一个布尔值,然后说我不能使用下一个doOver.trim() 布尔值代码。

final static String TITLE = "ISBN-13 Generator!";
final static String CONTINUE_PROMPT = "\nDo this again? [y/n] ";
static Scanner input = new Scanner(System.in);

private static void process(Scanner sc, String args[]) {

    boolean numberChecker;
    String isbn;
    do {
        System.out.println("\nEnter the first 12 digits of an ISBN-13: ");
        isbn = input.nextLine();
        input.close();
        isbn = isbn.trim();
        numberChecker = true;
        int s = 0;

        do {
            numberChecker = numberChecker && Character.isDigit(isbn.charAt(s));
            s++;
        } while (s < isbn.length() || numberChecker == false);
    } while (isbn.length() != 12 & numberChecker == false);

    int sum = 0;
    int s = 0;
    do {
        if (s % 2 == 0) {
            sum = sum + isbn.charAt(s) - 48;
        } else {
            sum = sum + 3 * (isbn.charAt(s) - 48);
        }
        s++;
    } while (s < 12);
    {
        sum = 10 - (sum % 10);
        if (sum == 10)
            sum = 0;
    }
    System.out.println("Your ISBN is " + isbn + sum);
}

private static boolean doThisAgain(Scanner sc, String prompt) {
    System.out.print(prompt);
    String doOver = sc.nextLine();
    return doOver.trim().equalsIgnoreCase("Y");
}

public static void main(String args[]) {
    System.out.println("Welcome to " + TITLE);
    Scanner sc = new Scanner(System.in);
    do {
        process(sc, args);
    } while (doThisAgain(sc, CONTINUE_PROMPT));
    sc.close();
    System.out.println("Thank you for using the " + TITLE);

}

它应该显示 "Do this again? [y/n]" 你输入 "y" 重新开始这个过程,输入 "n" 停止并让系统打印出来 ("Thank you for using the " + TITLE)

发生这种情况是因为您已经使用行 input.close();

关闭了扫描仪实例

只需注释掉或删除 input.close();,您的程序就会按预期运行。

        System.out.println("\nEnter the first 12 digits of an ISBN-13: ");
        isbn = input.nextLine();
       //input.close();

如果有帮助请告诉我! :)