所以我正在编写一个程序,从文件中的数据中填充部分填充的数组,我需要知道文件中的行数,这样我就可以在for循环中创建一个条件,这样就没有了边界异常。所以我创建了一个方法,说:
public static int lineFinder(String[] names) throws FileNotFoundException
{
Scanner in = new Scanner(new File("prog6_1.txt"));
int count = 0;
while(in.hasNextLine())
{
count++;
}
return count;
}
我的文件如下:
3459凯特伊丽莎白布朗4.00
5623 Rachel Jessica Smith 3.45
9837 Thomas Robert Doe 3.73
1235 Riley Leigh Green 2.43它永远不会终止,我无法弄清楚为什么因为我在最后放了一条额外的线。有什么建议吗?
答案 0 :(得分:4)
hasNextLine()
方法不会将光标向前移动。你需要在循环中使用nextLine()
方法来做到这一点。
答案 1 :(得分:2)
hasNextLine()
仅检查,但doesn't consume the line。你需要在循环中调用nextLine()
。
答案 2 :(得分:1)
hasNextLine()只是检查下一行是否可用它没有获取下一行,因为在验证下一行存在后你应该使用nextLine()。修改你的while循环,如下所示:
while(in.hasNextLine())
{
in.nextLine();
count++;
}
答案 3 :(得分:0)
hasNextLine()
不会使光标前进(即,它不消耗该线)。您的代码应使用in.nextLine()
,如下所示:
public static int lineFinder(String[] names) throws FileNotFoundException
{
Scanner in = new Scanner(new File("prog6_1.txt"));
int count = 0;
while(in.hasNextLine())
{
in.nextLine();
count++;
}
return count;