[英]Counting lines containing specific values in a text file
我正在尝试计算文本文件中包含特定类型的值的行,并将结果存储在变量中,以备后用。 但是,我一直陷于无限循环中。 该文件在第一行只有一个double
值,然后是String
,一个int
,然后在其后的每一行都有一个double
(按此顺序)。 我只想计算包含String
值的行数,然后在我的代码的其他地方使用此计数。 我认为条件file.hasNextLine()
的do-while循环将是最好的解决方案。
文件名是从另一个方法传入的,然后在displayItemMenu(..)
方法中打开,但是我可以肯定,由于正确输出了文件中的第一个double
,因此可以正确读取文件。
public static int displayItemMenu (String fileName, int choice) throws FileNotFoundException
{
File inputFile = new File (fileName);
Scanner file = new Scanner (inputFile);
double currentBalance = file.nextDouble();
Scanner keyboard = new Scanner(System.in);
boolean invalid = false;
int fileLines = 0;
int actionChoice = 0;
System.out.println ("choice: " + choice);
do
{
fileLines++;
} while (file.hasNextLine());
System.out.println ("FileLines: " + fileLines);
for (int i = 0; i < fileLines; i++)
{
if (choice == fileLines)
{
String item = file.next();
int quantity = file.nextInt();
double price = file.nextDouble();
file.close();
}
}
}
这里:
do {
fileLines++;
}while (file.hasNextLine());
您没有读取任何行,因此您始终位于文件的第一行。 更改为此:
while (file.hasNextLine()) {
fileLines++;
file.nextLine();
}
您需要file.nextLine()
; file.hasNextLine()
仅检查是否还有一个文件,但不移动指针。
我建议您暂时更改一下do,因为如果没有换行文件, file.nextLine()
会抛出异常
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.