2013-10-07 3 views
0

Это беспокоило меня какое-то время. Обычно я не прошу помощи и не занимаюсь исследованиями, но я не мог найти ответа.Подсчет чисел в текстовом файле с использованием Java

Как написать программу, которая читает текстовый файл, и рассчитать, сколько раз появляется определенное число? Я - огромный новичок в 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()); 
     } 
    } 
} 
+2

Что происходит не так? вы получаете ошибки? –

+1

Пожалуйста, правильно отформатируйте свой пример кода. – Trein

ответ

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 был перенесен в файл. Я дам вам возможность реализовать распечатку части задания, так как это даст вам лучшее представление о том, как это решение работает.

+0

+1, но вам не нужно инициализировать int массивы, по умолчанию они заполняются 0. – arynaq

+0

@arynaq: true, но я думаю, что это одна из тех хороших привычек, которая делает код более читабельным и надежным. –

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]);

Смежные вопросы