如何使用逗号作为分隔符检索带空格的行?

时间:2013-08-10 01:07:26

标签: java android

我在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

现在,如何使用逗号作为分隔符检索带空格的行?

3 个答案:

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

如果目标是读取行,我更喜欢BufferedReader而不是Scanner

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果您想在阅读文件时将其分开,请使用String Tokenizer(或Stream Tokenizer。将分隔符设置为“,”。那你应该没事。

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

public static String randomLine(ArrayList list) {
        return (String) list.get((int)(Math.Random()*list.size()));
    }