use*_*240 3 java console for-loop java.util.scanner
我有这个方法,并从控制台(键盘)读取一个int数字序列的想法,并在ArrayList中添加所有这些,我使用类Scanner读取数字,但在for循环不起作用,它抛出" java.util.NoSuchElementException".
public static int mayorNumberSecuence(){
System.out.println("Give me a size ");
Scanner sn = new Scanner(System.in);
int n = sn.nextInt();
sn.close();
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i=0; i<= n; ++i){
System.out.println("Give me a number ");
Scanner sn2 = new Scanner(System.in);
int in = sn2.nextInt();
list.add(in);
sn2.close();
}
Run Code Online (Sandbox Code Playgroud)
你的问题在这里:
Scanner sn = new Scanner(System.in);
int n = sn.nextInt();
sn.close();
Run Code Online (Sandbox Code Playgroud)
您正在关闭当前Scanner关闭InputStream用于读取数据的当前值,这意味着您的应用程序将不再接受来自用户的任何输入.这就是为什么创建一个新的将无法Scanner读取的原因System.in.即使你创建另一种类型的阅读器使用System.in也行不通.
通常情况下,用打交道时System.in,你创建一个单一的阅读器(在这种情况下,Scanner),将所有的应用程序.所以,你的代码应该是这样的:
System.out.println("Give me a size ");
Scanner sn = new Scanner(System.in);
int n = sn.nextInt();
//sn.close();
List<Integer> list = new ArrayList<Integer>();
for (int i=0; i < n; ++i){
System.out.println("Give me a number ");
//Scanner sn2 = new Scanner(System.in);
int in = sn.nextInt();
list.add(in);
//sn2.close();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3735 次 |
| 最近记录: |