Java 如何使用Android Studio 2.1.3从Android中的文本文件中获取随机行?

Java 如何使用Android Studio 2.1.3从Android中的文本文件中获取随机行?,java,android,android-studio,random,java-io,Java,Android,Android Studio,Random,Java Io,我有一个500行的文本文件。我把这个文本文件放在app/src/main/assets文件夹中,名为“words.txt”。在这个文件中,每一行都用换行符分隔。现在我需要从这个文本文件中获取随机行。在发布本文之前,我访问了以下问题 我已经从上面的链接和一个链接构建了我的代码。我不知道有一个叫做行号阅读器的类存在 这是我的密码: try { //Initialize assetmanager class AssetManager am = this.get

我有一个500行的文本文件。我把这个文本文件放在app/src/main/assets文件夹中,名为“words.txt”。在这个文件中,每一行都用换行符分隔。现在我需要从这个文本文件中获取随机行。在发布本文之前,我访问了以下问题

我已经从上面的链接和一个链接构建了我的代码。我不知道有一个叫做行号阅读器的类存在

这是我的密码:

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

现在这段代码可以工作了,但总是给出第一行。随机数 已生成,但lnr(LineNumberReader)始终读取第一行。 为什么?

请参见此 但是请注意,setLineNumber(int)实际上并没有改变流中的当前位置;它只更改getLineNumber()将返回的值。


这就是为什么它总是读取第一行。

您的readLine()从文件开头开始读取第一行。如果调用readLine()十次,那么第十次它将读取第十行。
LineNumberReader
???我从没见过。它来自哪里?名字也很奇怪。May first的评论是错误的,现在看来是错误的。您生成的
n
的值是什么?如果它不起作用,那么只需使用普通的readLine()并在循环中调用它n次。@greenapps请告诉生成的n的值。另请参见Oracle,该类不提供其命名的函数。因此我有错误的假设。在这种情况下,如何更改正在读取的当前行号?skip()有用吗?@LongRanger确实有用。我正在考虑使用随机无和读取行的循环。