日期:2014-05-20  浏览次数:20767 次

高手帮帮忙,一道笔试题
本帖最后由 xiaanming 于 2012-12-12 10:46:58 编辑
a.b.c.d
a.c.d.z
a.c.c
b.a

转换成如下格式的文本:

root
|---a
    |---b
        |---c
            |---d
    |---c
        |---d
            |---z
    |---c
        |---c
|---b
    |---a

下面是我写的部分代码

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;


public class Test {
static String s = null;

public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("D:/javaProject/dir.txt")));

while((s = br.readLine()) != null){
String[] arr = s.split("\\.");

for(int i = 0; i < arr.length; i++){
String ou = "";
for(int p = 0; p < i; p++){
ou += "\t";
}
ou += "|---" + arr[i];
System.out.println(ou);
}

}

if(br != null){
br.close();
br = null;
}
} catch (FileNotFoundException e) {
System.out.println("文件读取错误!");
} catch (IOException e) {
e.printStackTrace();
}
}
}


我打印的结果是:
|---http
|---ting
|---baidu
|---com
|---song
|---946428
|---http
|---ting
|---baidu
|---com
|---song
|---1670643
|---http
|---ting
|---baidu
|---com
|---song
|---1400921
|---http
|---ting
|---baidu
|---com
|---song
|---1263029
|---http
|---ting
|---baidu
|---com
|---song
|---1137358


需要的效果是:
|---http
|---ting
|---baidu
|---com
|---song
|---946428

                                        |---1137358

                                        |---1263029

                                        |---946428


------解决方案--------------------
这只是针对给出的例子,还是有点弊端,就是相同的头元素必须顺序放在一起。不能随即存放,
得稍加改动下