0

我的 game.txt 文件中有这条记录

menard,menard mabunga,0 
francis,francis mabunga,0 
angelica,francis mabunga,1

我使用此代码访问文件并将其存储在数组列表中;

Scanner s = new Scanner(getResources().openRawResource(R.raw.game));
        ArrayList<String> list = new ArrayList<String>();

        while (s.hasNext()){
            list.add(s.next());
        }
        s.close();

并使用此函数加载随机行;

public static String randomLine(ArrayList list) {
        return (String) list.get(new Random().nextInt(list.size()));
    }

当我尝试使用System.out.println(randomLine(list));输出打印 randomLine 函数的结果时mabunga,0

现在,如何检索以逗号作为分隔符的空格?

4

3 回答 3

1

您正在阅读单词而不是线条。使用nextLine()而不是next(). 所以,这应该是你的代码:

Scanner s = new Scanner(getResources().openRawResource(R.raw.game));
ArrayList<String> list = new ArrayList<String>();

while (s.hasNext()){
    list.add(s.nextLine()); // Change here!!
}
s.close();

如果目标是阅读线条,我更喜欢BufferedReaderScanner

于 2013-08-10T01:10:14.620 回答
0

您应该只实例化 Random 一次,并存储对它的引用。否则,nextInt()将始终返回相同的值。

于 2013-08-10T01:09:27.710 回答
0

使用 a String Tokenizer(或者Stream Tokenizer如果您想在读取文件时将它们分开)。将分隔符设置为“,”。那你应该没事。

在 randomLine 函数中使用下面的代码,而不是你的:

public static String randomLine(ArrayList list) {
        return (String) list.get((int)(Math.Random()*list.size()));
    }
于 2013-08-10T01:10:43.247 回答