0

嗯,你好。我想做的是:我有一组键值对,它们来自我写在 txt 文件中的树形图。输出如下:

1 4 2 8 2
3 8 2 5 1
6 9 1 4 3
etc

键位于第一列并已排序。我的目标是在第一列中找到缺失值的位置,为每个缺失的数字插入一个空行,然后将它们写入没有第一列的文件。所以文件中的列表希望是这样的:

4 2 8 2
         //blank line
8 2 5 1
         //blank line
         //blank line
9 1 4 3
etc

我试图计算每个关键行之间的差异并显示这样的行,但没有。任何建议将不胜感激。

...
int i = 0;
for (Integer key : rowMap.keySet()) {
                    String row = key + "";

                    for (Integer[] rows : rowMap.get(key)) {
                        for (Integer col : rows) {
                            row += " " + col;
                       }                          
       ------>      }
             i++;
             if (key.equals(i)){
                        writer.println(row);
                    }
                   else {
                      int dif = key-i;
                        int j;
                        for (j=1; j<=dif; j++){
                            writer.println("");
                        }
                        writer.println(row);
                    }
             }
                writer.close();
...
4

1 回答 1

0

差异周围的部分有点令人困惑。但它没有你想象的那么复杂。在为某个键打印一行之前,您只需打印最后一个键和当前键之间的所有空行(如果有的话):

public static void print(SortedMap<Integer, int[]> map, PrintWriter writer) {
    int last = 1;
    for (int key : map.keySet()) {
        for (int i = last + 1; i < key; i++) {
            writer.println();
        }
        last = key;
        writer.println(Arrays.toString(map.get(key)));
    }
}

(为简单起见,我只是用来Arrays.toString(...)格式化一行。根据需要替换它。)

于 2013-11-10T01:28:23.723 回答