Java 扫描仪下一行()异常:未找到行

Java 扫描仪下一行()异常:未找到行,java,java.util.scanner,Java,Java.util.scanner,我正在为静态方法进行扫描,出现以下异常: Exception in thread "main" java.util.NoSuchElementException: No line found 我的modify方法倾向于从控制台获取2个字符串作为输入,但它不起作用。 注意:我没有使用scanner.close() 更新:尝试使用资源块关闭曲线括号内的内容()。所以,它确实关闭了InputStream,然后,将其删除。谢谢 static Book searchTitle(){ Scanne

我正在为静态方法进行扫描,出现以下异常:

Exception in thread "main" java.util.NoSuchElementException: No line found
我的modify方法倾向于从控制台获取2个字符串作为输入,但它不起作用。 注意:我没有使用
scanner.close()


更新:尝试使用资源块关闭曲线括号内的内容
()
。所以,它确实关闭了InputStream,然后,将其删除。谢谢

static Book searchTitle(){
    Scanner input = new Scanner(System.in))
        String booktitle;
        System.out.println("Please enter title:");
        booktitle = input.nextLine();

        for(Book b : BookList){
            if(b.getTitle() != null && b.getTitle().equals(booktitle)){
                System.out.println(b.toString());
                return (Book) b;
        }

    System.out.println("not found");
    return null;
}

更新:尝试使用资源块关闭曲线括号内的内容
()
。所以,它确实关闭了InputStream,然后,将其删除。谢谢

static Book searchTitle(){
    Scanner input = new Scanner(System.in))
        String booktitle;
        System.out.println("Please enter title:");
        booktitle = input.nextLine();

        for(Book b : BookList){
            if(b.getTitle() != null && b.getTitle().equals(booktitle)){
                System.out.println(b.toString());
                return (Book) b;
        }

    System.out.println("not found");
    return null;
}

您正在静态方法中使用java.util.Scanner的两个实例。您只需使用java.util.Scanner的一个实例。删除java.util.Scanner的两个实例,并将其添加为全局变量

static Scanner input = new Scanner(System.in);

然后仅使用输入来读取代码中的所有读数。确保在完成输入时关闭它。

您正在静态方法中使用两个java.util.Scanner实例。您只需使用java.util.Scanner的一个实例。删除java.util.Scanner的两个实例,并将其添加为全局变量

static Scanner input = new Scanner(System.in);

然后仅使用输入来读取代码中的所有读数。确保在完成输入时关闭输入。

您到底想实现什么?您确实关闭了扫描仪。这就是您在
try(Scanner input=new Scanner(System.in)){
@JainamJhaveri中使用的try with resource语句的全部要点。我想读取两个字符串booktitle和author。然后,将它们设置为tempbook,但它没有work@JBNizet我想当我们使用
(System.in)时
要读取InputStream,我们不应该关闭任何初始化的扫描程序?它起作用了,我想我应该阅读
try{}catch(){}
再多一点。谢谢。确实,您不应该关闭System.in。但您正在这样做。这就是异常的原因。您到底想实现什么?您确实关闭了扫描仪。这就是您在
try(scanner input=new scanner(System.in))中使用的try with resource语句的全部要点{
@JainamJhaveri我想读两个字符串booktitle和author。然后,将它们设置为tempbook,但没有work@JBNizet我想当我们使用
(System.in)
读取输入流时,我们不应该关闭任何初始化的扫描程序?它起作用了,我想我应该阅读
try{}catch(){}
再多一点。谢谢。确实,您不应该关闭System.in。但您正在这样做。这就是异常的原因。