2013-05-30 2 views
0

Простого файл данные, который содержитКак вы храните каждое значение отдельно, используя запятую, а затем сохраняете их в отдельный массив?

1908,Souths,Easts,Souths,Cumberland,Y,14,12,4000 
1909,Souths,Balmain,Souths,Wests,N 

Каждой линию представляет собой сезон премьерства и имеет следующий формат: год, премьеры, бегуны, мелкие премьерам, деревянные spooners, Grand Final состоялся, победный счет, проигрышных оценка, толпа

Я знаю, как хранить данные в массиве и использовать разделитель, но я не совсем уверен, как сохранить КАЖДЫЙ элемент данных запятой в отдельные массивы? Некоторые предложения и какой конкретный код будет использоваться, было бы неплохо.

ОБНОВЛЕНИЕ: Я просто добавил код, но он все еще не работает. Вот код:

import java.io.*; 
import java.util.Scanner; 

public class GrandFinal { 
    public static Scanner file; 
    public static String[] array = new String[1000]; 

    public static void main(String[] args) throws FileNotFoundException { 
     File myfile = new File("NRLdata.txt"); 
     file = new Scanner (myfile); 
     Scanner s = file.useDelimiter(","); 
     int i = 0; 
     while (s.hasNext()) { 
      i++; 
      array[i] = s.next(); 
     } 

     for(int j=0; j<array.length; j++) { 
      if(array[j] == null) 
       ; 
      else if(array[j].contains("Y")) 
       System.out.println(array[j] + " "); 
     } 
    } 
} 
+0

Возможно, вы сохраните каждую строку в массиве, например массив [0] = {1908, юг, восток, юг, Камберленд, Y, 14,12,4000} – Shuvo0o

+0

Я думаю, что у меня есть ответ, который может помочь, но я просто хочу уточнить, что вы хотите делать. Вы хотите взять каждую строку из файла и взять каждую часть данных из этой строки и поместить их в отдельные массивы? Итак, вы хотите массив лет, массив премьеров, массив или бегунов вверх и т. Д.? И будет ли каждая строка иметь те же 9 бит данных? –

+0

Это австралийский футбол (он же регби), правильно? G'day мат. – vikingsteve

ответ

0

После работы вокруг немного, я придумал следующий код:

private static File file; 
private static BufferedReader counterReader = null; 
private static BufferedReader fileReader = null; 

public static void main(String[] args) { 
    try { 
     file = new File("C:\\Users\\rohitd\\Desktop\\NRLdata.txt"); 
     counterReader = new BufferedReader(new FileReader(file)); 
     int numberOfLine = 0; 
     String line = null; 
     try { 
      while ((line = counterReader.readLine()) != null) { 
       numberOfLine++; 
      } 

      String[][] storeAnswer = new String[9][numberOfLine]; 
      int counter = 0; 

      fileReader = new BufferedReader(new FileReader(file)); 

      while ((line = fileReader.readLine()) != null) { 
       String[] temp = line.split(","); 
       for (int j = 0; j < temp.length; j++) { 
        storeAnswer[j][counter] = temp[j]; 
        System.out.println(storeAnswer[j][counter]); 
       } 
       counter++; 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 

    catch (FileNotFoundException e) { 
     System.out.println("Unable to read file"); 
    } 
} 

я добавил counterReader и fileReader; которые используются для подсчета количества строк, а затем для чтения фактических строк. В массиве 2d содержится storeAnswer.

Надеюсь, ответ лучше.

+0

Что делает (YourLine)? – Shuvo0o

+0

@ Shuvo0o: (YourLine) является просто владельцем места. Я собирался показать вам место, где должна быть ваша линия. Я очищу его и отправлю ответ. Ура! –

+0

Ответ был обновлен, чтобы удалить (YourLine). –

2

Здесь вы идете. Используйте ArrayList. Его динамический и удобный.

BufferedReader br = null; 
    ArrayList<String> al = new ArrayList(); 
    String line = ""; 

    try { 

     br = new BufferedReader(new FileReader("NRLdata.txt")); 

     while ((line = br.readLine()) != null) { 
      al.add(line); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    for (int i = 0; i < al.size(); i++) { 
     System.out.println(al.get(i)); 
    } 

Что не работает в вашем случае?

Поскольку ваш массив season пуст. Вы должны определить длину, например:

private static String[] season = new String[5]; 

Это не так, потому что вы не знаете, сколько строк вы собираетесь хранить. Вот почему я предложил вам использовать ArrayList.

+0

Этот код работает хорошо, но нас не учили использовать Связанный список, поэтому мы должны использовать регулярный массив. – Shuvo0o

+0

Как вы выбираете конкретные данные? Например, я хочу отобразить список премьеров, на которых был Grand Final, в котором указано Y или N в строках. – Shuvo0o

+0

Другими словами, я хочу отобразить весь список данных после 5-й запятой? – Shuvo0o