java - 如何从数组列表中获取值?

标签 java arrays list

该计划简介:该计划跟踪拥有航空公司成员(member)卡的人员以及他们每周收集的积分数量。 (week1,2,3,4)信息存储在数组中,需要时可以通过“listButton”输出。

我知道如何从数组中获取一个值并简单地输出它,但不确定如何使用循环来做到这一点。查看“totalPointsButton”下的问题区域

public class AirlineCardsView extends FrameView {

    class airline {
        String lastName, firstName;
        int week1, week2, week3, week4;

        airline (int _week1, int _week2, int _week3, int _week4, String _lastName, String _firstName) {
            week1 = _week1;
            week2 = _week2;
            week3 = _week3;
            week4 = _week4;
            lastName = _lastName;
            firstName = _firstName;
        }
    }

    /** Define the ArrayList */
    ArrayList <airline> members = new ArrayList <airline>();

    public AirlineCardsView(SingleFrameApplication app) {
        //GUI stuff
    }// </editor-fold>

    private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {                                          

        String lastName, firstName;
        int week1, week2, week3, week4;

        week1 = Integer.parseInt(weekOneField.getText());
        week2 = Integer.parseInt(weekTwoField.getText());
        week3 = Integer.parseInt(weekThreeField.getText());
        week4 = Integer.parseInt(weekFourField.getText());
        lastName = lastNameField.getText();
        firstName = firstNameField.getText();

        airline c = new airline(week1, week2, week3, week4, firstName, lastName);
        members.add(c);
    }                                         

    private void listButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           

        String temp = "";

        for (int x=0; x<=members.size()-1; x++) {
            temp = temp + members.get(x).firstName + " "
                    + members.get(x).lastName + ": "
                    + members.get(x).week1 + " "
                    + members.get(x).week2 + " "
                    + members.get(x).week3 + " "
                    + members.get(x).week4 + "\n";
        }
        memberListTArea.setText(temp);

    }             

这里我不确定如何使用存储在相应成员的数组中的相同值来初始化周1、周2、周3、周4(对于int TotalPoints)值。

    private void totalPointsButtonActionPerformed(java.awt.event.ActionEvent evt) {

        int week1, week2, week3, week4; 
        String lastName, firstName;

       String points = "";

        for (int j = 0; j < members.size()-1; j++) {
 //this line checks the inputted name to see if it matches any stored in array.
                if (members.get(j).lastName.equals(lastNameField.getText())) {
                    int totalPoints = week1 + week2 + week3 + week4; //then adds total points
                    }
                }

        }

最佳答案

我希望我正确理解了这个问题......

  • 首先,这一行有问题:

    for (int j = 0; j < members.size()-1; j++) {
    

您应该删除 -1或使用<= 。否则你将无法到达最后一个元素。

  • if (members.get(j).lastName.equals(lastNameField.getText()))可能会抛出NPE。 ( members.get(j).lastName 可能为 null)此方法中定义的变量(week1-4,以及姓氏、名字)也没有多大意义。

  • 您声明 int totalPoints在 if block 中,这意味着,在 if block 之外不会看到它。如果所有逻辑都在 if block 中,那没什么大不了的。

  • 你可以尝试:

    Airline al = null;
    int totalPoints;
    for (int j = 0; j < members.size(); j++) {
        al = members.get(j);
        if (al.lastName.equals(lastNameField.getText())) {
            totalPoints = al.week1 + al.week2 + al.week3 + al.week4;
        }
    }
    

更好:

    int totalPoints;
    for (Airline al:members) {
        if (al.lastName.equals(lastNameField.getText())) {
            totalPoints = al.week1 + al.week2 + al.week3 + al.week4;
        }
    }
  • 为了使代码看起来更好,您可以考虑在 Airline 中添加 getter/setter类(class)。还添加一个方法,int getTotalPoints()返回 4 周的总和。那么你就不必在课外总结。

关于java - 如何从数组列表中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16348087/

相关文章:

html - 当文本对于列表来说太宽时,多行列表项

java - 测试应用程序是否线程安全

Javascript 过滤函数不返回数组

javascript - 是否可以在数组中搜索对象的两个属性

list - 使用递归将整数转换为 LISP 中的二进制列表

PYTHON:将嵌套列表中相同值的子列表创建到一个列表中

java - 服务正在运行但线程已停止

java - 3个线程按顺序打印数字

Java:可调整大小的数组列表不会保持平行

c - 如何读取 C 文件的内容并使用 fgets() 将其存储到数组中?