Как посчитать, сколько раз число появляется в файле .txt - PullRequest
1 голос
/ 02 марта 2012

Доброе утро,

Я делаю упражнения на Java и наткнулся на этот вопрос. У меня есть файл .txt с несколькими номерами, по одному в строке. Цель упражнения - увидеть, какие числа равны 10 ^ 0, ..., 10 ^ n до достижения n. Затем я должен написать в .txt, сколько раз каждый из них появляется. Итак, у меня есть файл с:

1 100 100 100 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");
            }
        }
    }
}

Ответы [ 2 ]

5 голосов
/ 02 марта 2012

Поскольку существует несколько счетчиков, которые нужно отслеживать, одного целочисленного счетчика явно недостаточно.

Одна из возможностей - использовать Map<Integer,Integer> для счетчиков.Поскольку это домашнее задание, я оставляю вам выяснить детали.

Другая возможность - использовать массив отсчетов и использовать log10(i) в качестве индекса в массиве.Другими словами, счет для 10^k будет сохранен в k -й позиции в массиве. Подсказка: В вашем коде вы уже косвенно вычисляете log10(i).

0 голосов
/ 02 марта 2012

Поскольку вы имеете дело с Integer, вы можете предварительно загрузить Map<Integer,Integer> со всеми значениями, меньшими, чем Integer.MAX (2 147 483 647).

Для карты потребуются все значения из 10 ^ 0,10 ^ 1, ..., 10 ^ 9 в качестве ключей (всего десять (10) ключей). Затем вы выполняете логическую проверку значения, которое читаете, если оно совпадает с одним из этих ключей, увеличивайте значение этого ключа на 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...