Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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 当创建另一个扫描仪时,NoTouchElementException引用到第一个扫描仪_Java_Methods_Java.util.scanner_Nosuchelementexception - Fatal编程技术网

Java 当创建另一个扫描仪时,NoTouchElementException引用到第一个扫描仪

Java 当创建另一个扫描仪时,NoTouchElementException引用到第一个扫描仪,java,methods,java.util.scanner,nosuchelementexception,Java,Methods,Java.util.scanner,Nosuchelementexception,所以小组中可能有人有类似的问题,但我找不到像我这样的问题。我不能让两台扫描仪工作,一台接一台。。。添加第二台扫描仪会使第一台扫描器发疯并抛出 “无接触异常” 在scanner命令的开头。 这是我的密码: 公共级Stiklainiai{ static Scanner program = new Scanner(System.in); static Scanner name_input = new Scanner(System.in); public static void main(String

所以小组中可能有人有类似的问题,但我找不到像我这样的问题。我不能让两台扫描仪工作,一台接一台。。。添加第二台扫描仪会使第一台扫描器发疯并抛出

“无接触异常”

在scanner命令的开头。 这是我的密码:

公共级Stiklainiai{

static Scanner program = new Scanner(System.in);
static Scanner name_input = new Scanner(System.in);

public static void main(String[] argumentai){



    System.out.println("Welcome to Java IDE !");

    name();
    jar();


}


public static String name() {



    String name_select;
    System.out.println("name yourself");
    name_select = name_input.next();
    name_input.close();

    return name_select;

}

public static int jar(){


    int jar_select;                         // input variable (1-6) for "if" statement

    int jar_weight_assigned = 0;                   //unassigned capacity (applied by default if error occurs (outside 1-6 bounds))
    String jar_name_assigned = "";               //unassigned name (applied by default if error occurs (outside 1-6 bounds))

    int custom_jar_cap = 0;                     //custom "int" variable (custom jar)
    String custom_jar_name = "";                 //custom "String" variable (custom jar)

    int[] jar_weight_arr = new int[5];         //jar capacity array
    String[] jar_name_arr = new String[5];  //jar name array

    jar_weight_arr[0] = 9;
    jar_weight_arr[1] = 99;
    jar_weight_arr[2] = 999;
    jar_weight_arr[3] = 9999;
    jar_weight_arr[4] = 99999;

    jar_name_arr[0] = "bybiene22";
    jar_name_arr[1] = "bybiene44";
    jar_name_arr[2] = "bybiene66";
    jar_name_arr[3] = "bybiene88";
    jar_name_arr[4] = "bybiene000";

    jar_select = program.nextInt();
    ...
    ...
    ...
代码的其余部分也是如此

当我运行它时,我可以输入一个名称,但之后我会得到
“NoTouchElementException”
,它指的是:

jar\u select=program.nextInt();
(扫描仪打开的位置)

然后是主方法中声明的方法错误:

jar();
剩下的代码只需要一个扫描器就可以正常工作

我的观点是使用一个单独的扫描器来创建一个方法,该扫描器将名称指定给 “x”变量,并将值返回给main方法。然后,第二个方法使用“x”变量和输入的值以另一种方法运行程序的其余部分


任何人都知道原因,我对java非常熟悉:)

问题隐藏在
扫描仪后面。关闭
。每当你关闭
扫描仪时,你也会关闭底层的
系统。在
中,当你使用第二台扫描仪访问它时,它将不可用


解决方案:不要关闭第一个
扫描仪

尝试在方法内部创建IO扫描仪。行
name\u input.close();
也将关闭底层
系统。
流中。因此,您将获得错误(即使有不同的扫描器,因为底层的
系统。
流中的扫描器是相同的,它现在已关闭)。尝试删除该行。非常感谢,它起作用了:)您还有其他问题吗?如果有,请编辑问题或问新问题。如果没有,请将任一答案标记为已接受。