繁体   English   中英

计算文本文件中包含特定值的行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM