Android 安卓Arraylist<;字符串[]>;始终跟随字符串[]变量的值

Android 安卓Arraylist<;字符串[]>;始终跟随字符串[]变量的值,android,arraylist,Android,Arraylist,我已经创建了一个ArrayList。我从Android手机读取文本文件,并在每个数组中存储字符串[3]。我使用调试器跟踪每个变量的值ArrayList中的值似乎总是跟在缓冲区的值后面。它们之间有联系吗 ArrayList<String[]> label_list = new ArrayList<>(); try { FileInputStream fIn = new FileInputStream(getPath()); BufferedReader m

我已经创建了一个ArrayList。我从Android手机读取文本文件,并在每个数组中存储字符串[3]。我使用调试器跟踪每个变量的值ArrayList中的值似乎总是跟在缓冲区的值后面。它们之间有联系吗

ArrayList<String[]> label_list = new ArrayList<>();

try {
    FileInputStream fIn = new FileInputStream(getPath());
    BufferedReader myReader = new BufferedReader(new InputStreamReader(fIn));
    String aDataRow = "";
    String[] buffer = new String[3];
    int j=0;
    while ((aDataRow = myReader.readLine()) != null) {
        if(!aDataRow.equals("")){
            buffer[j]=aDataRow;
            j++;
        }else{
            label_list.add(buffer);
            j=0;
        }
    }
    label_list.add(buffer); //for last one
    myReader.close();
    for(int i=0;i<label_list.size();i++){
        txt_show.append(label_list.get(i)[0]);
    }

    } catch (Exception e) {
        Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
    }
}
ArrayList label_list=new ArrayList();
试一试{
FileInputStream fIn=新的FileInputStream(getPath());
BufferedReader myReader=新的BufferedReader(新的InputStreamReader(fIn));
字符串aDataRow=“”;
字符串[]缓冲区=新字符串[3];
int j=0;
而((aDataRow=myReader.readLine())!=null){
如果(!aDataRow.equals(“”){
缓冲区[j]=aDataRow;
j++;
}否则{
标签列表。添加(缓冲区);
j=0;
}
}
label_list.add(buffer);//最后一个
myReader.close();

对于(inti=0;i你必须把
j++
排除在
if-else
条件之外

ArrayList<String[]> label_list = new ArrayList<>();

try {
    FileInputStream fIn = new FileInputStream(getPath());
    BufferedReader myReader = new BufferedReader(new InputStreamReader(fIn));
    String aDataRow = "";
    String[] buffer = new String[3];
    int j=0;
    while ((aDataRow = myReader.readLine()) != null) {
        if(!aDataRow.equals("")){
            buffer[j]=aDataRow;

        }else{
            label_list.add(buffer);

        }
            j++;
    }
    label_list.add(buffer); //for last one
    myReader.close();
    for(int i=0;i<label_list.size();i++){
        txt_show.append(label_list.get(i)[0]);
    }

    } catch (Exception e) {
        Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
    }
}
ArrayList label_list=new ArrayList();
试一试{
FileInputStream fIn=新的FileInputStream(getPath());
BufferedReader myReader=新的BufferedReader(新的InputStreamReader(fIn));
字符串aDataRow=“”;
字符串[]缓冲区=新字符串[3];
int j=0;
而((aDataRow=myReader.readLine())!=null){
如果(!aDataRow.equals(“”){
缓冲区[j]=aDataRow;
}否则{
标签列表。添加(缓冲区);
}
j++;
}
label_list.add(buffer);//最后一个
myReader.close();

对于(int i=0;i我发现了错误。添加缓冲区=新字符串[3];将解决我的问题,但我不知道为什么。有人能向我解释一下吗

try {
    FileInputStream fIn = new FileInputStream(getPath());
    BufferedReader myReader = new BufferedReader(new InputStreamReader(fIn));
    String aDataRow = "";
    String[] buffer = new String[3];
    int j=0;
    while ((aDataRow = myReader.readLine()) != null) {
        if(!aDataRow.equals("")){
            buffer[j]=aDataRow;
            j++;
        }else{
            label_list.add(buffer);
            j=0;
            **buffer = new String[3];**
        }
    }
    myReader.close();
    for(int i=0;i<label_list.size();i++){
        txt_show.append(label_list.get(i)[0]);
    }

} catch (Exception e) {
    Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
试试看{
FileInputStream fIn=新的FileInputStream(getPath());
BufferedReader myReader=新的BufferedReader(新的InputStreamReader(fIn));
字符串aDataRow=“”;
字符串[]缓冲区=新字符串[3];
int j=0;
而((aDataRow=myReader.readLine())!=null){
如果(!aDataRow.equals(“”){
缓冲区[j]=aDataRow;
j++;
}否则{
标签列表。添加(缓冲区);
j=0;
**缓冲区=新字符串[3]**
}
}
myReader.close();

对于(int i=0;iI)我已经尝试过了,但没有成功。实际上,在调试过程中,我可以看到除label_list.add(buffer)之外的所有东西都正常工作。它将覆盖先前的值。无论如何,谢谢。