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();

目標が行を読むことである場合、BufferedReader私はそれを好みます。Scanner

于 2013-08-10T01:10:14.620 に答える
0

Random を一度だけインスタンス化し、それへの参照を保存する必要があります。それ以外の場合は、nextInt()常に同じ値を返します。

于 2013-08-10T01:09:27.710 に答える
0

a String Tokenizer(またはStream Tokenizer、ファイルの読み取り中にそれらを分離する場合は a) を使用します。セパレータを「,」に設定します。その後、あなたは元気になるはずです。

randomLine 関数では、独自のコードではなく、次のコードを使用します。

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