存储三层数据的最佳方法 - 多维数组?

时间:2011-04-05 03:41:08

标签: java arrays multidimensional-array

我正在使用这种格式的文件:

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理想情况下是数字;它将被添加到文件的每一行被处理。这三者之间的关系基本上是每天可以有很多courseCodesOfMonth,但是每个courseCode只有一个headCount,因为当我把它全部读入数组时,我将添加它。

所以,在derpspeak中,这应该是大致看起来的样子:

{String dayOfMonth = {{String courseCode},{int headCount}}}

我在这里遇到的两个问题是...... a)我不确定如何在那里实际编码这种时髦阵列 b)因为我不能真正地将我的大脑包裹起来,所以我很有可能基本上只为我需要的东西设计了一些完全错误的东西。或者不可能。既?

例如,数组将从空开始。我想添加dayOfMonth,courseCode和headCount来启动它。但我不能只去array.add(dayOfMonth),因为它期待一个数组,让我怀疑我应该使用别的东西。哎呀!

天哪,我的大脑。

2 个答案:

答案 0 :(得分:0)

这看起来像是家庭作业,所以我的回答将包括提示。

提示#1 - 这些行中有一些实体。弄清楚它们是什么,并为每一个写一个班级。

提示#2 - 使用列表类型而不是数组。必须使用正确数量的元素预先分配数组。

提示#3 - 使用地图类型(例如HashMap或TreeMap)来表示从一种事物到另一种事物的映射。

答案 1 :(得分: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();
        }