【问题标题】:NoSuchElementException reffers to first scanner when another is createdNoSuchElementException 指的是创建另一个扫描仪时的第一个扫描仪
【发布时间】:2018-08-07 08:49:51
【问题描述】:

所以小组中可能有人有类似的问题,但我找不到与我相似的人。我不能让 2 个扫描仪一个接一个地工作……添加第二个扫描仪会使第一个扫描仪发疯并扔掉

“NoSuchElementException”

在扫描器命令的开头。 这是我的代码:

公共课 Stiklainai {

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();
    ...
    ...
    ...

剩下的代码以此类推。

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

jar_select = program.nextInt();(扫描仪打开的地方)

接着是main方法中声明的方法错误:

jar();

其余代码只需一台扫描仪即可正常工作...

我的意思是使用单独的扫描仪创建一种方法,将名称分配给 "x" 变量,并将值返回给 main 方法。然后,第二个以另一种方法运行程序的其余部分,使用“x”变量和估算值

任何人都知道原因,我对 java 很陌生 :)

【问题讨论】:

  • 尝试在方法中创建 IO 扫描器。
  • name_input.close(); 行也关闭了底层System.in 流。因此,您会遇到错误(即使存在不同的扫描仪,因为底层 System.in 流是相同的并且现在已关闭)。尝试删除该行。
  • 非常感谢,它成功了 :)

标签: java methods java.util.scanner nosuchelementexception


【解决方案1】:

问题隐藏在Scanner.close 后面。每当您关闭Scanner 时,您也会关闭底层的System.in,因此在您使用第二个扫描仪访问它时,它将不可用。

解决方法:不要关闭第一个Scanner

【讨论】:

  • 你还有什么吗?如果是这样,请编辑问题或提出新问题。如果没有,请将任一答案标记为已接受。
猜你喜欢
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多