2016-05-18 47 views
-5

我有一個文件有90個對象,每個對象有20個屬性。文件的每一行都有1個對象,所以我需要讀取一行並將所有這20個屬性分開,以便我可以填充對象中需要的所有信息,然後將該對象放入對象數組中。如何讀取文件並將其放入一個對象數組中?

我在SO上發現了一個問題,它做了類似的事情,但他們每行有一個單獨的屬性,所以他們只需要讀一行並將該行放入每個屬性中,我的問題是我在一行中有20個屬性,我怎麼能分開他們?

編輯1:

感謝大家,幫助,但現在我得到了另一個問題。 我的代碼如下:

public void loadGang(){ 
    String currentline; 
    Gang g =new Gang(); 
    String[] result= new String[50]; 
    BufferedReader info; 
    try { 
     info = new BufferedReader(new FileReader("Gangs.txt")); 
     for(int i=0;i<90;i++){ 
      currentline= info.readLine(); 
      result=currentline.split(" "); 
      g.setName(result[0]); 
      g.setHire(Integer.parseInt(result[1])); 
      g.setUpkeep(Integer.parseInt(result[2])); 
      g.setCombat(Integer.parseInt(result[3])); 
      g.setDefense(Integer.parseInt(result[4])); 
      g.setTechlevel(Integer.parseInt(result[5])); 
      g.setStealth(Integer.parseInt(result[6])); 
      g.setDetect(Integer.parseInt(result[7])); 
      g.setChaos(Integer.parseInt(result[8])); 
      g.setControl(Integer.parseInt(result[9])); 
      g.setHeal(Integer.parseInt(result[10])); 
      g.setInfluence(Integer.parseInt(result[11])); 
      g.setResearch(Integer.parseInt(result[12])); 
      g.setStrenght(Integer.parseInt(result[13])); 
      g.setBlade(Integer.parseInt(result[14])); 
      g.setRange(Integer.parseInt(result[15])); 
      g.setFighting(Integer.parseInt(result[16])); 
      g.setMarts(Integer.parseInt(result[17])); 
      listgang.add(g); 
      System.out.println(listgang.get(i).getName()); 
     } 
     info.close(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 


} 

我有 「異常線程 」main「 java.lang.ArrayIndexOutOfBoundsException:1 在Game.loadGang(Game.java:30)」 所以這個工程7行的文本文件,但它停在那裏,我認爲有一些問題與「currentline = info.readLine();」一部分,因爲我試圖把一個打印那裏,所以我可以看到,如果這是工作,但當它到了那一行它沒有做任何輸出,所以也許問題在那裏?它應該是一個數組越界的問題,但我看不到在哪裏,任何意識?

編輯2: 我猜這個文件存在問題,或者是因爲我試圖通過檢查結果的長度來檢查是否發生了拆分,並且我看到在該行中輸出爲1,所以發生了某些事情那條線...

編輯3: 我做到了!文件上有一個空白行或文件,我在記事本中看不到,但是我打開了寫字板的.txt文件,我剛剛刪除了該行,現在它工作正常。

+0

到目前爲止你做了什麼?你能舉一些例子嗎?請詢問更具體的問題。 – Turing85

+0

嘿,你知道該怎麼做。但這不是代碼請求的地方。 –

+0

如果我知道該怎麼辦我不會問,因爲這是浪費時間... 我檢查了這個帖子http://stackoverflow.com/questions/23145416/creating-objects-via-txt-file-into -an-array-in-java,我需要做類似的事情,但他每行都有一個屬性,並且我將所有屬性都放在一行中,我只需要有人告訴我一種方法或者我需要的東西來分離東西當我閱讀信息。或者我應該只讀一整行到一個字符串,然後從字符串中獲取我需要的屬性?對不起,如果我不是很好地解釋自己,但我對java還不瞭解很多 – I3ryI3e

回答

0

我給你的建議是創建一個自定義對象讀取器。自定義對象讀取器將讀取對象並將對象的數據分離爲一些數據結構(數組等)。該對象可能會返回該結構。您可以爲每一行使用這個對象讀取器一次。當每個對象讀取後返回數據結構時,可以使用它來完成你想要的任務。你當然可以採取這個想法,並根據自己的喜好進行修改。如果你喜歡這個迴應接受它。

+0

當您談論創建自定義對象讀取器時,您正在討論的是如何創建一個方法,將整行讀入一個字符串,然後在我需要的每一條信息中拆分該行? – I3ryI3e

+0

這可能是,如果你想。你說每一行都是一個對象,所以我的意思是一個接受對象的方法。但是如果你有一行需要分割的文本,那麼你可以讀取一行並在方法中分割它。 – jillian

+0

你能幫我解決我現在的問題嗎? – I3ryI3e

相關問題