0

这一直困扰着我一段时间。我通常不倾向于寻求帮助和进行研究,但我找不到答案。

如何编写读取文本文件的程序,并计算某个数字出现的次数?我是 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();
    }
}

现在我遇到的麻烦是我需要读取文件并编写一个代码说 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());
        }   
    } 
}
4

2 回答 2

5

你其实很接近。很明显,您将不得不在某种列表中跟踪您的计数,而数组在这里会做得很好。

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

int inMarks [] = new int [100]; 

for (int i = 0; i < 100; i++)
{
    inMarks [i] = 0;
}

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

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

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

于 2013-10-07T23:07:14.510 回答
1

我感觉你正在寻找这样的东西(我没有测试过这段代码)

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]; 
        String readNumber = "";

        while ((readNumber = readFile.readline()) != null) {
            number = Integer.parseInt(readNumber);
            inMarks[number]++;
        }

    }
}

上面的代码基本上有一个由 100 个整数组成的数组。然后我们开始读取文件,直到无法再读取任何内容。每次我们读取一行时,我们都会解析成一个整数(通常你应该用 try...catch 换行)。然后,我们通过增加数组中的相应索引将读取此数字的次数增加 1。因此,如果您想知道数字“32”出现了多少次,您可以使用 System.print.out(inMarks[32]);

于 2013-10-07T23:07:55.027 回答