Java之Scanner
用了两次Scanner,Java抛出异常:Exception in thread “main” java.util.NoSuchElementException
报错代码如下:
import java.util.Scanner;
public class Test {
public static void main(String[] args){
Test test=new Test();
int n=test.talk();
long start =System.currentTimeMillis();
test.solveK(n);
long end=System.currentTimeMillis();
long time=end-start;
System.out.println("程序运行时间为:"+time+"ms");
}
public int talk(){
int num=0;
System.out.println("请确定N为:");
Scanner sc=new Scanner(System.in);
num=sc.nextInt();
sc.close();
return num;
}
public void solveK(int N){
System.out.println("请输入N个整数:");
Scanner s=new Scanner(System.in);
int[] arr=new int[N];
for(int i=0;i<N;i++){
arr[i]=s.nextInt();
}
s.close();
int temp=0;
for(int i=0;i<N-1;i++){
for(int j=i+1;j<N;j++){
if(arr[i]>arr[j]){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
System.out.println("中间数:"+arr[N/2]);
}
}
解决办法为添加代码: if(s.hasNext())
编译运行的结果:
好吗!根本没给我第二次输入的机会。
原因:
在两次Scanner的输入中,关闭了第一个Scanner,并且将System.in也关闭了,导致第二个Scanner也跟着关闭了。
如图: