【问题标题】:Getting the next Value in a ArrayList(Not working)获取 ArrayList 中的下一个值(不工作)
【发布时间】:2016-02-26 02:35:06
【问题描述】:

每次用户按下按钮(使用 Swing)时,我都会尝试获取特定数组列表中的下一个值。

这是我的尝试:

private void BNextActionPerformed(java.awt.event.ActionEvent evt) {
        int i = 0;
        Parse p = new Parse();
        temp = p.getTemp();
        temp2 = p.getTemp2();
        temp3 = p.getTemp3();

        if (CBUniversities.getSelectedIndex() == 0) {
            LNumStudents.setText("Number of students:  " + temp);
            Student s = p.getMacList().get(i+1);
            jTextField2.setText(s.getFirstName());
            TLastName.setText(s.getSurName());
            jTextArea1.setText(s.getAddress());
            i++;
        }
}

其中 Parse 是一个类,包含 3 个整数的 getter 方法temp,temp2,temp3, and a getter for an ArrayList. Student s 是 Student 类的一个对象,其中每个学生都有一个名字、姓氏和地址(在构造函数中初始化)。

执行此 if 语句时,它会在指定字段中显示学生信息,但是,这只适用于前两个学生。在那之后,i 的值似乎永远不会增加?

我试图在 if 语句期间放置一个println 检查以查看它的值,但它只更改一次,这很奇怪。

我也试图把它变成一个 for 循环,但这个值似乎只改变了一次(i)。

Parse 有我正在使用的这个 getter 方法

public ArrayList<Student> getMacList() {
        return mac;
}

CBUniversities 也是一个变量:

private javax.swing.JComboBox CBUniversities;

我不确定这里出了什么问题,有什么想法吗?

【问题讨论】:

  • int i 似乎在错误的范围内。尝试将其移至班级级别。

标签: java swing arraylist


【解决方案1】:

您在方法范围内声明了i,因此每次执行您的方法时都会重新初始化i

相反,通过将private int i = 0; 放在您的方法之外,但仍然在类范围内来声明一个实例变量。

【讨论】:

  • 如果它没有在循环等中使用,它应该被称为 i 以外的东西。
  • 哇,我很遗憾没有早点意识到这一点,谢谢!
  • @TTEd 不要难过!修复错误的 99% 的时间你都会有这种体验。这总是显而易见的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-31
  • 2020-07-03
相关资源
最近更新 更多