Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 扫描仪的意外行为_Java_Java.util.scanner_Nosuchelementexception - Fatal编程技术网

Java 扫描仪的意外行为

Java 扫描仪的意外行为,java,java.util.scanner,nosuchelementexception,Java,Java.util.scanner,Nosuchelementexception,在下面的代码中,有两个方法scanner1和scanner2。在这两个方法中,创建新的Scanner对象,然后通过调用close()关闭Scanner()来扫描输入 对于scanner1方法,工作正常,但调用scanner2方法时出现以下错误: 在线程“main”中输入字符串:印度异常 java.util.NoSuchElementException:未找到行输入字符串:在 java.util.Scanner.nextLine(未知源代码)位于 cheggapril.TestScanner.sc

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

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

在线程“main”中输入字符串:印度异常

java.util.NoSuchElementException:未找到行输入字符串:在 java.util.Scanner.nextLine(未知源代码)位于 cheggapril.TestScanner.scanner2(TestScanner.java:17)位于 main(TestScanner.java:24)

问题是,为什么在scanner2方法中,扫描仪无法扫描用户输入,即使在该方法中,也会创建一个新的扫描仪对象。
请解释清楚。任何参考或例子都将非常有用

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


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

>答案很简单您创建了两个扫描仪方法,但用于实例化扫描仪对象的>变量具有通用名称,即>“sc”。解决方案:->将扫描仪2中的sc名称替换为其他名称,如。。public static void scanner2(){//scanner2 Scanner中的问题sc2=new Scanner(System.in);//创建了另一个Scanner对象System.out.println(“输入字符串:”;字符串输入=sc.nextLine();//扫描对象sc.close();//关闭输入}
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

    }

}