Java新手 - 只是试图掌握它.该程序执行如下:
What's your age?23
23
What's your name?Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at king.getName(king.java:25)
at king.main(king.java:9)
Run Code Online (Sandbox Code Playgroud)
它试图运行的代码如下:
import java.util.*;
public class king {
public static void main(String[] args){
System.out.println(getAge());
System.out.println(getName());
}
public static int getAge(){
System.out.print("What's your age?");
Scanner scanner = new Scanner(System.in);
String age = scanner.next();
scanner.close();
int numberAge = Integer.parseInt(age);
return numberAge;
}
public static String getName(){
System.out.print("What's your name?");
Scanner newScanner = new Scanner(System.in);
String name = newScanner.next();
newScanner.close();
return name;
}
}
Run Code Online (Sandbox Code Playgroud)
不要使用scanner.close()< - 您的错误来源!
删除行scanner.close()和newScanner.close()
来自Java DOC:
当扫描仪关闭时,如果源实现了Closeable接口,它将关闭其输入源.
这意味着它关闭了System.in- 糟糕的选择!
从Scanner.javaJDK的源代码,throwFor()是:
private void throwFor() {
skipped = false;
if ((sourceClosed) && (position == buf.limit()))
throw new NoSuchElementException();
else
throw new InputMismatchException();
}
Run Code Online (Sandbox Code Playgroud)
显然,如果我们已经到达输入的末尾,或者如果源被关闭,那么我们得到了NoSuchElementException().我很确定IDEONE的那个发生了因为position == buf.limit()而不是sourceClosed
| 归档时间: |
|
| 查看次数: |
11809 次 |
| 最近记录: |