我有此方法,并且从控制台(键盘)读取了一个整数序列,并将所有整数添加到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();
}
首先,使用一个扫描仪,而不是每次都重新创建一个扫描仪。此外,您的for循环还会多循环一次。
Scanner sn = new Scanner(System.in);
System.out.println("Give me a size ");
int n = sn.nextInt();
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < n; i++){
System.out.println("Give me a number ");
int in = sn.nextInt();
list.add(in);
}
sn.close();
这对我来说很好,最后列表包含了我输入的所有数字。
您可以通过打印列表进行测试:
System.out.println(list);
与旧代码的问题是,当你使用.close()
的扫描仪,它关闭底层InputStream
,这是System.in
。如果关闭System.in
,则无法在下一个扫描仪中再次使用它。这就是使用一台扫描仪可解决此问题的原因。
我试图通过使用命令“java postfix 错误: 请在java.util.scanner.throwfor(未知源) 在java.util.scanner.next(未知源) 在java.util.scanner.nextInt(未知源) 在java.util.scanner.nextInt(未知源) 在java.util.scanner.nextInt(未知源) 在java.util.sca
我想从标准输入中读取一个双数,但是我总是得到这个异常: Java . util . inputmismatchexception 如果输入是整数,那没问题,但是如果是双精度的,我会得到异常。 线程“main”Java . util . inputmismatchexception Java . util . scanner . throw for(scanner . Java:864)Java .
问题内容: 嗨,我是新手,我想知道在控制台中读取用户Input的最佳选择是什么,据我所知有3种方法可以做到: 我应该选择哪一个?为什么选择一个而不选择另一个? 问题答案: 缓冲读取器 从Java 1.1开始 引发检查异常 可以读取字符,字符数组和行 快速 扫描器 从Java 1.5开始 不抛出检查异常 可以读取行,空格分隔的标记,正则表达式分隔的标记和数字 难以阅读单个字符 安慰 从Java 1.
嗨,我正在编写一个程序,它使用Scanner从用户那里获取输入,然后使用布尔方法检查输入的长度是否不超过六个字符。问题是,如果长度小于六个,我使用了while循环来不断请求输入;但是在第一次错误输入后,如果你插入一串六个字母或更长的字符串,循环仍然会继续。这是程序: 谢谢
我正在尝试编写使用Scanner类从用户那里获取输入的代码。但是hasNext()、hasNextInt()和hasNextLine()每次都会运行无限循环。
问题内容: 编辑 以便进一步阅读:问题是我的输入文件已损坏。 我不明白我在做什么错: 我正在使用此代码: 哪个工作正常。现在,由于某种原因,我想换一个扫描仪。我的代码变成: 这次,我们从不输入while,因为r.hasNextLine()始终返回“ false”。关于我在做什么错的任何想法吗? 我精确地说,没有其他更改,文件仍然相同。 编辑 :我还精确地我尝试了另一个文件,并得到相同的结果,这意味