该计划简介:该计划跟踪拥有航空公司成员(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/