[英]how to read Integer from a text file in Java
我正在尝试读取包含Java中整数值的文件,并且为此找到了以下答案:
但是我的代码陷入了无限循环。
我的代码是:
Scanner scanner = new Scanner(new File("/home/lalit/Desktop/Project/key_x.txt"));
//Scanner scanner1 = new Scanner(new File("/home/lalit/Desktop/Project/key_y.txt"));
int i = 0,count=0;
while(scanner.hasNextInt())
{
System.out.println("This is count "+count);
count++;
}
上面的代码陷入无限循环。
我的文本文件包含:
317
40
280
10
318
24
456
126
4
129
404
468
287
275
165
我遇到了另一个问题,当我尝试将元素存储在int数组中时,它将引发异常;
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 Hybrid.Image.main(Image.java:503)
我存储数组元素的代码是:
int tall[] =new int[count];
int tall1[] =new int[count];
while(scanner.hasNextInt())
{
int k=scanner.nextInt();
tall[i] =k;
System.out.println(tall[i]);
i++;
}
循环永远不会结束,因为条件永远不会改变。 您仅在检查扫描仪是否具有“下一个int
”,而从未真正读取过该int
。 因此,随时可以读取文件中的第一个int
。
如果您不关心那个int
是什么,而只想从扫描仪中读取它,则可以这样做,而只需忽略该值:
while(scanner.hasNextInt())
{
scanner.nextInt();
System.out.println("This is count "+count);
count++;
}
另外,如果您确实想对该int
,则它将位于scanner.nextInt()
的返回值中。
如下所示更改代码,因为您永远不会获取该值。
Scanner scanner = new Scanner(new File("/home/lalit/Desktop/Project/key_x.txt"));
//Scanner scanner1 = new Scanner(new File("/home/lalit/Desktop/Project/key_y.txt"));
int i = 0,count=0;
while(scanner.hasNextInt())
{
scanner.nextInt()
System.out.println("This is count "+count);
count++;
}
创建Scanner
它具有内部状态。 当您使用scanner.nextXXX()
API从数据中获取数据时,可以更改此状态。
scanner.hasNextInt()
不会更改state 。 只检查它。 当scanner.nextInt()
确实更改了其状态,然后在下次调用它时,它将获取下一个数据。
您忘记移动光标。
扫描仪通过读取输入流来工作。 您可以想象将整个文件放在一个长字符串中,然后将光标放在文件的开头。 然后,当您调用.hasNextInt()时,您将询问扫描程序当前位置光标前是否有整数。 如果存在,它将返回true,但实际上不会移动光标。 仅当您调用nextInt()时,光标才会移动。 而scan.nextInt()也将返回一个整数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.