我在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
。
现在,如何使用逗号作为分隔符检索带空格的行?
答案 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()));
}