我试图在文本文件中计算包含特定类型值的行,并将结果存储在变量中以供以后在别处使用。但是,我一直陷入无限循环。该文件在第一行只有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();
}
}
}
答案 0 :(得分:2)
下面:
do {
fileLines++;
}while (file.hasNextLine());
您没有阅读任何内容,因此您始终位于文件的第一行。将其更改为:
while (file.hasNextLine()) {
fileLines++;
file.nextLine();
}
答案 1 :(得分:1)
您需要file.nextLine()
;
file.hasNextLine()
仅检查是否还有一个文件但是没有移动指针。
我建议你暂时更改do,因为如果没有新行file.nextLine()
会抛出异常