Я создал вдохновляющий текстовый файл в папке с ресурсами. В этом файле вдохновения около 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);
Отдельной строкой без индекса.
читать построчно, используя считыватель буфера. сохраните его в строковом массиве. - используя random () получить предложение.
1) зачитайте предложения из этого файла в список. 2) генерировать случайное целое число в диапазоне 0.. длина списка -1. 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 за вашу помощь. Попытаюсь.
Попробуйте вот так:
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
}
}
}
Спасибо вебианкам, постараюсь.
вы могли бы сделать это так, если бы предложения были разделены \ n. непроверенный, вы должны заменить randomGenerator чем-то, что дает вам случайное число между этими двумя параметрами. после .split у вас есть массив со всеми строками загруженного вами текста.
String splits[]=text.split('\n');
int random=randomGenerator(0,splits.length);
tv_text1.setText(splits[random]);
это действительно больше общий вопрос Java, чем вопрос Android. это задание?
Спасибо, Ласси Киннунен.
как предложение указано в inspiration.txt?