【发布时间】:2016-08-19 07:11:56
【问题描述】:
我有一个 500 行的文本文件。我将此文本文件放在 app/src/main/assets 文件夹中,名称为“words.txt”。在这个文件中,每一行都用换行符分隔。现在我需要从这个文本文件中获取随机行。在发布此之前,我访问了以下问题。
How to load random line from text file in android?
InputStreamReader and reading random lines from .txt file
How to grab a random line from a text file and print the line [duplicate]
How to get a random line of a text file in Java?
Reading a random line from text file in android
我已经从上面的链接以及this 一个链接构建了我的代码。我不知道存在一些称为行号阅读器的类。
这是我的代码:
try {
//Initialize assetmanager class
AssetManager am = this.getAssets();
//open file using asset manager
InputStream is = am.open("words.txt");
//read buffer manager
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
//Important: use of LineNumberReader Class
LineNumberReader lnr = new LineNumberReader(reader);
Random r = new Random();
int n = r.nextInt(500)+1;
lnr.setLineNumber(n);
mWord = lnr.readLine();
Log.d("MyLog","The letter is "+mWord);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
现在这段代码可以工作,但总是给出第一行。生成随机数,但 lnr (LineNumberReader) 始终读取第一行。为什么?
这是为了学习目的。对于当前情况,我知道文件的长度(或总行数)为 500。
【问题讨论】:
-
您的 readLine() 从文件开头读取第一行。如果你调用 readLine() 十次,那么第十次它会读取第十行。
-
LineNumberReader???从来没有见过。它从何而来?奇名也。可能第一个评论是错误的,现在看起来。你生成的n的值是多少? -
如果它不起作用,那么只需使用普通的 readLine() 并在循环中调用它 n 次。
-
请说出生成的n的值。
标签: java android android-studio random java-io