ArrayList仅添加所有位置的最后一个元素

潘光

这是我的整个代码,非常复杂,但请帮助我。我花了两天时间,但失败了:

public static ArrayList<DocGia> XuatDocGia() throws IOException {
    ArrayList<DocGia> listDocGia = new ArrayList<>();
    File fileDocGia = new File("fileDocGia.txt");
    if(fileDocGia.exists() == false) {
        System.out.println("Chưa có đọc giả nào trong thư viện");
    } else {
        BufferedReader br = new BufferedReader(new FileReader("fileDocGia.txt"));     
        if (br.readLine() == null) {
            System.out.println("Chưa có đọc giả nào trong thư viện");
        } else {
            int soDong = DemSoDong("fileDocGia.txt");
            int dongHienTai = 0;
            Scanner fileScanner = new Scanner(fileDocGia);
            for(int i = 0, z = 0;;i++, z++) {
                DocGia docGia = null;
                System.out.println("***Đọc giả thứ: " + (i+1));
                docGia.tendocgia = fileScanner.nextLine();
                if(i >= 1) {
                    docGia.tendocgia = fileScanner.nextLine();
                }
                docGia.maDocGia = fileScanner.nextLine();
                docGia.soSachmuon = fileScanner.nextInt();
                docGia.thoiGianMuonSach = fileScanner.nextInt();
                listDocGia.add(docGia);
                docGia.XuatDocGia();
                dongHienTai += 4;
                if(dongHienTai == soDong) {
                    fileScanner.close();
                    break;
                }
            }
        }

    for(DocGia docGia: listDocGia) {
        docGia.XuatDocGia();
    }
  }
  return listDocGia;
}

看我的代码,当我运行:

docGia.XuatDocGia();

->每个元素的值都在调试时正确。这也意味着里面的变量值是正确的。但在此功能结束时。我跑

for(DocGia docGia: listDocGia) {
    docGia.XuatDocGia();
}

这是XuatDocGia功能:

    public static void XuatDocGia(){
    System.out.println(tendocgia);
    System.out.println(maDocGia);
    System.out.println(soSachmuon);
    System.out.println(thoiGianMuonSach);
}

它只是为我显示此ArrayList中的最后一个元素,重复3次(等于元素数)。

我认为问题来自于添加过程 listDocGia.add(docGia);

你们不需要打扰我的代码中的其他所有内容,因为我知道它确实很复杂。我已经进行了仔细的测试,只是专注于我的问题。

我很抱歉,因为我是越南语,是Java的初学者。下一次,一切都会变成英语。非常感谢。

他们是

如果这是实际的代码,则将为列表添加空引用,但是由于使用的是静态方法来打印值,因此不会得到NullPointerException假设您的代码通过了编译,这意味着DocGia该类的所有成员都是静态的,这解释了为什么在循环的每次迭代中获得相同的值。

你应该改变

DocGia docGia = null;

DocGia docGia = new DocGia ();

并将其所有成员DocGia(包括XuatDocGia打印它们方法)更改为非静态。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Arraylist哈希图仅添加最后一个元素

通过 for 循环向元素添加事件会导致所有元素仅影响循环中的最后一个元素

如何仅返回数组的最后一个元素而不获取所有元素

git merge是否添加所有提交或仅添加最后一个提交?

迭代仅输出 JSON 数组的最后一个元素而不是所有数组

递归推送仅添加最后一个元素

最后一个元素在绝对位置上破坏所有兄弟姐妹

添加圆角以列出隐藏最后一个元素的位置

仅一个值分配给构造函数中的所有arraylist元素

Ruby打印哈希的所有元素,但最后一个

选择除最后一个以外的所有元素

选择不是最后一个兄弟的所有最后一个元素

仅显示最后一个元素

CSS选择器在所有框(第一个和最后一个)中添加一个before伪元素?

如何在JAVA中报告列表中最后一个元素的所有并列位置

C-链接列表-插入元素未更新-仅添加最后一个输入元素

将ArrayList元素移动到列表中的最后一个位置?

丢弃 datetimeindex 的所有元素,除了第一个和最后一个

交换数组的所有元素,除了第一个和最后一个

如何显示元素内元素的所有对象,直到 Angular 中的最后一个元素?

选择除具有特定类的最后一个元素以外的所有元素

react.js打字稿传播(...)仅添加最后一个元素

仅将最后一个元素添加到 Android 中的 RecyclerView (Kotlin)

哪一个元素最后被添加到ArrayList?

我怎么能一个ArrayList的最后3个元素添加到不同的ArrayList?

将CSS应用于除最后一个元素之外的所有元素?

为什么数组中的最后一个元素会覆盖所有先前的元素?

对除最后一个元素以外的所有元素应用border-right

如何删除HTML表单中最后一个元素以外的所有元素