2011-04-05 166 views
0

我在具有這種格式的文件操作:存儲三個數據的最佳方法 - 多維數組?

LAWS303 RHLT1 10 84 AITKEN WU 
LAWS314 RHLT3 15 2 PARADZA VISSER 
LAWS329 EALT006 6 62 AITKEN WILSON 
LAWS334 HMLT105 2 43 ANDREW INKSTER 
LAWS334 HMLT206 2 62 JULIAN YOUNG 
LAWS340 RHLT1 11 87 AL YANG  

這一計劃的目標是,該月的每一天(第三列),每門課程代碼(第一列)應與當天參加該課程的學生總數(第四列)一起打印。從我的思考來看,這涉及到多次讀取文件(ew!)或將三個突出值(日期,課程,人數)加載到某種數組中,然後對其進行操作。儘管對多維數組是相當熟悉的,但這個數字一再引起我的頭腦內爆。我已經在我面前寫下了這個程序的僞代碼,當涉及到定義數組的行時,我的思維畫了一個空白。

dayOfMonth可以保留一個字符串,因爲它只會與另一個字符串進行比較。 courseCode顯然也需要是一個字符串。但是,headCount最好是數字型的;它將被添加到文件的每一行都被處理。三者之間的關係基本上是每天可以有很多courseCodeOfMonth,但每個courseCode只有一個headCount,因爲我將它們添加到它中,因爲我將它們全部讀入數組中。

所以,在derpspeak,這是怎麼回事應該大致看:

{字符串請將dayOfMonth = {{字符串courseCode},{INT人數}}}

兩個問題,我這裏有,有。 a)我不確定如何在那裏實際編碼這種時髦的數組,b)因爲我不能真正地把我的大腦包圍起來,所以我有很好的機會基本上只是設計了一些我需要的完全錯誤的東西。或者不可能。都?

例如,數組將從空開始。我想添加dayOfMonth,courseCode和headCount來啓動它。但我不能只是去array.add(dayOfMonth),因爲它期待一個數組,導致我懷疑我應該使用別的東西。哎呀!

哦,上帝,我的大腦。

回答

0

這看起來像家庭作業,所以我的答案將包含提示。

提示#1 - 這些行中有一些實體。弄清楚他們是什麼,併爲每個人寫一個課。

提示#2 - 使用列表類型而不是數組。數組必須預先分配正確數量的元素。

提示#3 - 使用地圖類型(例如HashMap或TreeMap)來表示從一種事物到另一種事物的映射。

+0

天堂禁止我學到任何東西:P – Tom 2011-05-14 12:48:01

0

如果要存儲和檢索值,請使用@Stephan C的輸入。 這裏是使用sysout打印值的代碼片段。您可以根據需要進行修改以保存這些值。

BufferedReader reader = new BufferedReader(new FileReader("< your file here >")); 
     String string = reader.readLine(); 
     while (string != null) { 
      StringTokenizer tokenizer = new StringTokenizer(string); 
      String print = ""; 

      if (tokenizer.countTokens() > 4) { 
       print = tokenizer.nextToken(); 
       tokenizer.nextToken(); 
       print = tokenizer.nextToken() + " " + print; 
       print = print + " " + tokenizer.nextToken(); 
      } 
      System.out.println(print); 
      string = reader.readLine(); 
     } 
相關問題