2011-04-05 169 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(); 
     } 
相关问题