2013-08-10 2 views
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())); 
    } 

При попытке распечатать результат функции randomLine с использованием System.out.println(randomLine(list)); выхода только mabunga,0.

Теперь, как я могу получить строку с пробелами с запятой в качестве разделителя?

ответ

0

Вы должны создать экземпляр Random ony один раз и сохранить ссылку на него. В противном случае nextInt() всегда будет возвращать одно и то же значение.

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, если цель состоит в том, чтобы читать строки.

+0

благодаря @martjin, последующий вопрос ... как можно исключить строки со значением 1? – iamnards

+0

Используйте это: 'Строка line = s.nextLine(); if (! line.endsWith ("1")) list.add (строка); ' –

0

Используйте String Tokenizer (или Stream Tokenizer, если вы хотите их разделить при чтении файла). Установите разделитель в положение «,». Тогда все будет хорошо.

В функции randomLine использовать следующий фрагмент кода, а не ваша:

public static String randomLine(ArrayList list) { 
     return (String) list.get((int)(Math.Random()*list.size())); 
    } 
Смежные вопросы