我正在尝试打印其和与输入匹配的元素对。但是它在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)
输入: 这是预期的输入
答案 0 :(得分:0)
制作另一个扫描仪是有问题的(不确定扫描仪是否缓冲,但是如果缓冲了,则此代码将无法工作)。将其传递或在班级中创建一个作为字段。
除此之外,这段代码没有内在的错误:错误是您得到的,因为那是发生了什么:您将输入作为输入,说:
2 1 3
,然后完全结束输入(例如,通过敲击某个特定的组合键,或者您通过文件提供输入,即使用java -cp . com.foo.YourApp <inputs.txt
,文件就此结束。您的应用需要另一个数字(代表总和)。