繁体   English   中英

如何计算数字出现在.txt文件中的次数

[英]How to count how many times a number appears in a .txt file

早上好,

我正在做一些Java练习,偶然发现了这个问题。 我有一个.txt文件,其中包含多个数字,每行一个。 练习的目的是查看哪些数字等于10 ^ 0,...,10 ^ n直到达到n。 然后,我必须在.txt中写入每个数字出现多少次。 所以我有一个文件:

1100100100 10 1 1

我需要写:

1-10 3-1 3-100

我可以读取文件,然后检查编号并打印。 我只是想不通如何正确地做一个计数器。 有什么帮助吗?

这是一段代码:

// TODO - Count how many time a number appears.
public static void numberOfTimes (BufferedReader in, BufferedWriter out, int n)        throws IOException {

        String s;
    int i;
    int counter = 0;

    while ((s = in.readLine()) != null) {
        i = Integer.parseInt(s);
        for (int j = 0; j <= n; j++) {
            if (i == Math.pow(10, j)) {
                counter++;
                out.write(Integer.toString(counter) + " " + Integer.toString(i) + "\n");
            }
        }
    }
}

由于要跟踪多个计数,因此单个整数计数器显然不够用。

一种可能性是使用Map<Integer,Integer>进行计数。 因为这是家庭作业,所以我留给您找出细节。

另一种可能性是使用计数数组,并使用log10(i)作为数组的索引。 换句话说, 10^k的计数将存储在数组的第k个位置。 提示:在您的代码中,您已经在间接计算log10(i)

由于您正在处理Integer,因此可以预加载Map<Integer,Integer>的所有小于Integer.MAX(2,147,483,647)的值。

映射将需要10 ^ 0,10 ^ 1,...,10 ^ 9中的所有值作为键(总共十(10)个键)。 然后,您需要对读取的值进行布尔检查,如果与这些键之一匹配,则将该键的值加1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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