使用Java计算文本文件中的数字

0 java arrays file

这一直困扰着我一段时间.我通常不倾向于求助并做我的研究,但我找不到答案.

如何编写读取文本文件的程序,并计算某个数字出现的次数?我是Java的初学者,也是一般的编程人员.这是我的代码.

此代码生成一个包含100个随机数的文本文件

import java.io.*;

public class Rolling 
{
    public static void main (String[] args) throws IOException
    {
        int randomNum;

        PrintWriter fileout = new PrintWriter (new FileWriter ("randumnums.txt"));

        for (int i= 0; i < 101; i++)
        {
            randomNum = (int) (Math.random() * 100);

            fileout.println (randomNum);
        }
        fileout.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我遇到的麻烦是我需要读取文件并编写一个代码,说X号被滚动了3次.例如,数字4在文本文件中出现了5次,所以我需要它打印"数字4被滚动5次".

import java.io.*;

public class Reading 
{
    public static void main (String[] args) throws IOException
    {
        BufferedReader readFile = new BufferedReader (new FileReader ("randumnums.txt"));
        int number = 0;
        int inMarks [] = new int [100]; 

        for (int i = 0; i < 100; i++)
        {
            inMarks [i] = Integer.parseInt(readFile.readLine());
        }   
    } 
}
Run Code Online (Sandbox Code Playgroud)

mus*_*der 5

你其实非常接近.很明显,你必须在某种列表中跟踪你的计数,并且数组在这里会做得很好.

首先,在实例化之后inMarks,将其中的每个值初始化为0:

int inMarks [] = new int [100]; 

for (int i = 0; i < 100; i++)
{
    inMarks [i] = 0;
}
Run Code Online (Sandbox Code Playgroud)

然后将下面的循环更改为:

String nextLine = null;
while ((nextLine = readFile.readLine()) != null)
{
    int thisInt = Integer.parseInt(nextLine);
    inMarks[thisInt] = inMarks[thisInt] + 1;
}
Run Code Online (Sandbox Code Playgroud)

inMarks现在完美地跟踪每个不同int的文件在文件中滚动了多少次.我将让你实现作业的打印输出部分,因为这将使你更好地理解这个解决方案的工作原理.