У меня есть текстовый файл в папке с ресурсами. Как мне получить доступ к случайному предложению из этого текстового файла?

Я создал вдохновляющий текстовый файл в папке с ресурсами. В этом файле вдохновения около 20 предложений. Итак, как мне выбрать любое предложение случайным образом и отобразить его в текстовом виде? Теперь отображаются все 20 предложений. Вот код. Может ли кто-нибудь помочь мне здесь.

tv_text1 = (TextView) findViewById(R.id.textView3);
String text = "";
try {
    InputStream is = getAssets().open("inspiration.txt");
    int size = is.available();
    byte[] buffer = new byte[size];
    is.read(buffer);
    is.close();
    text = new String(buffer);
} catch (IOException ex) {
    ex.printStackTrace();
}
tv_text1.setText(text);

как предложение указано в inspiration.txt?

Suseendran Kandasamy 30.03.2018 10:20

Отдельной строкой без индекса.

Abhi 30.03.2018 10:21

читать построчно, используя считыватель буфера. сохраните его в строковом массиве. - используя random () получить предложение.

Suseendran Kandasamy 30.03.2018 10:26

1) зачитайте предложения из этого файла в список. 2) генерировать случайное целое число в диапазоне 0.. длина списка -1. 3) получить предложение из списка по сгенерированному индексу

Vladyslav Matviienko 30.03.2018 11:44
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
103
3

Ответы 3

Чтобы прочитать текст из входного потока:

InputStream is = getAssets().open("inspiration.txt");    
List<String> doc =
          new BufferedReader(new InputStreamReader(resource,
              StandardCharsets.UTF_8)).lines().collect(Collectors.toList());

Получить случайную строку:

String randomSentence = doc.get((new Random()).nextInt(items.size()));

Спасибо Suseendran за вашу помощь. Попытаюсь.

Abhi 30.03.2018 10:44

Попробуйте вот так:

BufferedReader reader = null;
try {
  reader = new BufferedReader(
     new InputStreamReader(getAssets().open("inspiration.txt")));

  // do reading, usually loop until end of file reading
     String mLine;
     List<String> listLines  = new ArrayList<>();
     while ((mLine = reader.readLine()) != null) {
           //process line
           listLines.add(mLine);
     }

     if (listLines.size() > 0) {
         Random rand = new Random();
         int randomNumber = rand.nextInt(listLines.size());
         String randomLine = listLines.get(randomNumber);
         .......
     }

 } catch (IOException e) {
  //log the exception
 } finally {
   if (reader != null) {
      try {
         reader.close();
      } catch (IOException e) {
         //log the exception
    }
  }
}

Спасибо вебианкам, постараюсь.

Abhi 30.03.2018 10:44

вы могли бы сделать это так, если бы предложения были разделены \ n. непроверенный, вы должны заменить randomGenerator чем-то, что дает вам случайное число между этими двумя параметрами. после .split у вас есть массив со всеми строками загруженного вами текста.

String splits[]=text.split('\n');
int random=randomGenerator(0,splits.length);
tv_text1.setText(splits[random]);

это действительно больше общий вопрос Java, чем вопрос Android. это задание?

Спасибо, Ласси Киннунен.

Abhi 30.03.2018 10:47

Другие вопросы по теме