gpt4 book ai didi

java - 扫描仪的意外行为

转载 作者:行者123 更新时间:2023-11-30 06:45:52 24 4
gpt4 key购买 nike

在下面的代码中有两个方法scanner1和scanner2,这两种方法都会创建Scanner的新对象,并在通过调用close()关闭Scanner之后扫描输入。

import java.util.Scanner;

public class TestScanner {

public static void scanner1(){
Scanner sc = new Scanner(System.in);//created object of scanner
System.out.println("Enter string :");
String input = sc.nextLine(); //scanning input
sc.close(); //closing scanner object
}

public static void scanner2(){//problem in scanner2
Scanner sc = new Scanner(System.in);//created another scanner object
System.out.println("Enter String :");
String input = sc.nextLine();//scanning object
sc.close();//closing the input
}


public static void main(String[] args) {
scanner1();
scanner2();//problem here

}

}

对于scanner1方法工作正常,但是当调用scanner2方法时出现以下错误:

Enter string : India Exception in thread "main"

java.util.NoSuchElementException: No line found Enter String : at java.util.Scanner.nextLine(Unknown Source) at cheggapril.TestScanner.scanner2(TestScanner.java:17) at cheggapril.TestScanner.main(TestScanner.java:24)

问题是为什么在 Scanner2 方法中扫描仪无法扫描用户输入,即使在此方法中创建新的 Scanner 对象也是如此。请给一些明确的解释。任何引用或例子都会非常有用。

最佳答案

原因很简单,关闭第一个扫描仪对象也会在内部关闭第二个扫描仪实际使用的输入流

您的选择是:仅使用一台扫描仪,或者在您确定不再需要所有扫描仪时关闭这些扫描仪。

关于java - 扫描仪的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43699203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com