如何修复“线程“主”中的异常java.util.NoSuchElementException”?

时间:2019-07-19 13:09:07

标签: java arrays

我正在尝试打印其和与输入匹配的元素对。但是它在int size=s.nextInt();行中显示错误。

我该如何解决?

import java.util.*;

public class Main {
  public static void main(String[] args) {
    Scanner s=new Scanner(System.in);
    System.out.println("Enter the size of the array");
    int size=s.nextInt();
    int arr[]=new int[size];
    getElements(arr,size);
    System.out.println("Enter the sum data");
    int sum=s.nextInt();
    printPairs(arr,sum);
  }
  static void getElements(int a[],int sizee){
    //have the logic for accepting input numbers
    Scanner s=new Scanner(System.in);
    System.out.println("Enter "+sizee+" elements");

    for(int i=0;i<a.length;i++){

      a[i]=s.nextInt();
      }

  }
  static void printPairs(int a[],int data){
    //have the logic for printing pair information 
    for (int i=0;i<a.length;i++){
       int first = a[i];
      for (int j=i+1;j<a.length;j++){
        int second = a[j];
        if(first+second == data)
        System.out.println("("+first+", "+second+")");
      }
    }
  }
}

例外:

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at Main.main(Main.java:7)

输入: 这是预期的输入

1 个答案:

答案 0 :(得分:0)

制作另一个扫描仪是有问题的(不确定扫描仪是否缓冲,但是如果缓冲了,则此代码将无法工作)。将其传递或在班级中创建一个作为字段。

除此之外,这段代码没有内在的错误:错误是您得到的,因为那是发生了什么:您将输入作为输入,说:

2 1 3

,然后完全结束输入(例如,通过敲击某个特定的组合键,或者您通过文件提供输入,即使用java -cp . com.foo.YourApp <inputs.txt,文件就此结束。您的应用需要另一个数字(代表总和)。