我有一个方法,它循环遍历一个文件以查找行数。
static int findFileSize(Scanner f){
System.out.println("Got to counter:");
String str;
int line_count = 0;
while(f.hasNextLine()) {
line_count++;System.out.println(line_count);
//str = f.nextLine();
}System.out.println("File size: " + line_count);
return line_count;
}//end findFileSize
当我不包括str=f.nextLine();时;,我可以看到它无限期地索引。发生这种情况的原因是什么?有没有一种方法可以在不需要将数据存储到字符串中的情况下找到.txt文件中的行数?
发生这种情况的原因是什么?
你没有从Scanner
中读到任何东西,你只是在问它你是否能读到一些东西。
如果你走进一家商店,问他们是否有胡萝卜,如果答案是"是";,但是你没有买胡萝卜,商店里还有胡萝卜。所以,如果你走出去,走进来再次询问,他们仍然会有胡萝卜,所以他们会再次回答"是";(除非别人买了)。
你必须";买胡萝卜;使用CCD_ 2。
而不需要将数据不必要地存储到字符串中?
您不必将其存储在变量中:
f.nextLine();
将读取字符串并立即丢弃它。但这与将其存储在变量中没有太大区别:无论如何,变量只保留最后一行读取的内容。(但是,由于您没有给str
一个初始值,因此它不会在循环之后明确指定,因此在任何情况下都无法在循环之后读取其值)。