为什么 Bufferedreader 会出现缺失的句子

Why are there missing sentences with Bufferedreader

我正在尝试从 android 中的 txt 文件中获取句子,它按行获取句子,但其中一些缺失了?为什么?这是我的代码:

 public ArrayList<String> sorulist = new ArrayList<String>();
    ........
         try {


  InputStream ins = getResources().openRawResource(
                        getResources().getIdentifier("sorular",
                                "raw", getPackageName()));
                InputStreamReader InputRead= new InputStreamReader(ins);

                BufferedReader r = new BufferedReader(InputRead);

                while ((r.readLine()) != null) {
                    sorulist.add(r.readLine());
                }

                InputRead.close();
            } catch (Exception e) {
                e.printStackTrace();
                Toast.makeText(getBaseContext(), "nothing!",
                        Toast.LENGTH_SHORT).show();
            }

当我尝试使用此代码显示列表时:

 sorutxt.setText(sorulist.toString());

我在我的文本视图中得到了这个,所以这是列表:

[Yaptırımı manevi olan kurallar hangileridir?,Bir ülkede uygulanan, halen yürürlükteki yazılı ve yazısız hukuk kurallarına ne ad verilir?,null]

但列表中的某些内容丢失了,因为我的原始 txt 文件是这样的:

Sosyal hayatı düzenleyen kurallar hangileridir?
Yaptırımı manevi olan kurallar hangileridir?
Hukukun yaptırım türleri hangileridir?
Bir ülkede uygulanan, halen yürürlükteki yazılı ve yazısız hukuk kurallarına ne ad verilir?
"Pozitif hukuk" ile "tabii hukuk" arasındaki fark aşağıdaki seçeneklerden hangisidir?

我认为索引 0、2 和 4 项丢失了?我的代码有什么问题? 谢谢大家

while ((r.readLine()) != null) {
        sorulist.add(r.readLine());
}

基本上,由于 if,您会每隔一行删除一次。 readLine() 实际上读取一行,所以当你下次调用它时你已经通过了第一行。因此,如果读取的行不为空,您的代码就会运行我将读取下一行并将其放入列表中。

修复可能是:

String lineFromFile;
while ((lineFromFile = r.readLine()) != null) {
        sorulist.add(lineFromFile);
}