1

我想从 csv 文件中读取数据。这是我的代码:

    public void readCSV(String path) {
    monologList = new ArrayList<Monolog>();
    String row = new String();

    try {
        br = new BufferedReader(new FileReader(path));
        try {

            while ((row = br.readLine()) != null) {
                String[] splitted = row.split("%");
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

我可以运行代码,但它不会将任何数据保存到 splitted[]。splitted[] 在调试期间甚至不会出现。Eclipse 告诉我:“未使用分割的局部变量的值

我在另一个项目中使用相同的代码,从“/proc/net/arp”(Linux/Android)读取数据,它没有问题。

有任何想法吗?

真诚的,沃尔芬

编辑:已解决。由于我在初始化后没有使用 splitted,所以 eclipse 只是在调试期间将其删除。

4

4 回答 4

2

1.保持while循环的范围 之外。String[] splitted

2. 无法将值持久化到 while 块之外,导致其范围超出String[] splitted

于 2012-07-22T15:15:49.390 回答
1

调试器倾向于不保存有关已启动但从未调用的变量的数据。在下一行中添加对该数据的打印将解决问题。

于 2012-07-22T15:16:36.703 回答
0

Your variable splitted has been declared and defined both within that while loop. Declare it outside. Because of it not being so, it is being limited to while loop only, so can't be found outside it. Do it like so

String[] splitted;
int i = 0;
while ((row = br.readLine()) != null) {
     splitted[i++] = row.split("%");
}
于 2012-07-22T15:19:03.693 回答
0

您应该尝试以下方法:

List<String> myList = new ArrayList<String>();
while ((row = br.readLine()) != null) {
                myList.addAll(Arrays.asList(row.split("%")));
            }

稍后,您可以利用列表的内容。

于 2012-07-22T15:22:49.370 回答