2011-05-23 66 views
2

我有一個包含用戶信息的文本文件,以逗號分隔的行形式。我已經使用了試驗和研究的組合,嘗試將每行分成單獨的信息片段(通過使用分割函數),這些信息可以存儲在數組中,然後進行搜索。隨着代碼我有每個名字和用戶名在文本文件重複4次,我怎麼不明白。我所做的一切都是讓自己更加困惑,但我需要的只是從文本文件中提取每一行,將它分成4個獨立的信息片段,並以某種方式將其存儲在內存中以進行搜索。我擁有的代碼是;從文本文件填充多維數組

package assignment; 


import java.io.*; 

public class readUser { 
public void read() 
{ 
    try{ 

     FileInputStream propertyFile = new FileInputStream("AddUser.txt"); 

     DataInputStream input = new DataInputStream(propertyFile); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(input)); 

     String line; 

     while ((line = reader.readLine()) != null) { 

      String[] items = line.split(","); 
      String[][] usersArray = new String [5][2]; 
      int i; 
      for (String item : items) { 

       for (i = 0; i<items.length; i++){ 
        if (i == 0) { 
         System.out.println("Name: " + items[i]); 
        } else if (i == 1) { 
         System.out.println("Username: " + items[i]); 


       } 
      } 
      } 
      //System.out.println(line); 



     } 
     input.close(); 
    } 
    catch (Exception e){ 

     System.err.println("Error: " + e.getMessage()); 
    } 
     } 

} 

感謝這個

回答

5

任何建議看看你的代碼的擊穿,問題變得清晰:

for each line in property file (while loop): 
    for each item in line: 
     for each item in line: 
      if item 0 print username 
      else if item 1 print username 
      endif 
     end loop 
    end loop 
end loop 

您的代碼基本上是迭代名單items兩次。請記住,在Java中,以下兩個代碼片段是等價的 - 因爲它們都迭代數組或集合的值。

一個

for (String item : items) {...} 

for (int i = 0; i < items.length; i++) { 
    String item = items[i]; 
    .... 
} 
+3

+1,爲僞代碼,而不是實際寫海報的代碼。對於(i = 0; i camickr 2011-05-23 15:02:16

+0

{}是不需要的。 – Bhushan 2011-05-23 15:13:09