如何使用扫描仪类扫描文本文件,挑选某些短语并对其进行计数?

时间:2016-09-29 02:50:00

标签: java file text

我是学习java的新手,我在这个特定的任务上遇到了很多麻烦。通常我可以在经过一些研究后找出解决方案,但这让我很难过。 它是一个程序,用于读取具有不同字母组合的文件" G"和" B" (例如GG,GB,BB,BG)我必须计算文件的行数以及弹出的每个组合的实例数。任何帮助将非常感谢! 我尝试搜索所有帖子并尝试了一些东西,但现在似乎我的程序没有运行(虽然没有给我任何错误消息)。

源代码:

import java.util.Scanner;
import java.io.File;
import java.io.IOException;
public class Family
{
    public static void main(String[] args) throws IOException
    {
        //define variables
        String lineRead = "";
        int numberLines = 0; //# of lines
        int bothMales = 0; //# of houses with both males
        int bothFemales = 0; //# of houses with both females
        int oneEach = 0; //#of houses with one male and one female
        File fileName = new File("test1.txt");
        Scanner inFile = new Scanner(new File("test1.txt"));

        while (inFile.hasNextLine())
        {
            numberLines++;
            inFile.nextLine();
            Scanner check = new Scanner(inFile.nextLine());
            while(check.hasNext())
            {
                if (inFile.equals("BB"))
                {
                    bothMales++;
                } 
                else if (inFile.equals("GG"))
                {
                    bothFemales++;
                }
                else if ((inFile.equals("GB")) || (inFile.equals("BG")))
                {
                    oneEach++;
                }
            }
        }


        System.out.println("Sample Size: " + numberLines);
        System.out.println("Two Boys: " + bothMales );
        System.out.println("Two Girls: " + bothFemales);
        System.out.println("One Girl and One Boy: " + oneEach);


    }//end main method
}//end class

2 个答案:

答案 0 :(得分:0)

您必须使用扫描仪的nextLine方法

        while(check.hasNext())
        {
            String line = check.nextLine ();
            if (line.equals("BB"))
            {
                bothMales++;
            } 
            // etc
        }

根据您的行,您可能希望使用trim上的String方法或使用contains,而不是equals

答案 1 :(得分:0)

我认为通过制作一个String变量并将其设置为等于下一行来分析行更容易。解析字符串更容易。另外,为什么你在Scanner文件中使用inFile.equals(),这样就等于Scanner对象而不是字符串。

像这样迭代文件:

while(inFile.hadNextLine()){

 String nxtline = scan.nextLine():
 If(nxtLine.equals("BB") 
     Your code here repeat this for your other if statements. 

如果它在评论中告诉我,我希望这会有所帮助。