gpt4 book ai didi

java - 从一个类到另一个类访问数组数据时遇到问题

转载 作者:行者123 更新时间:2023-12-04 05:49:18 25 4
gpt4 key购买 nike

我在将数组的数据从一个类传递到下一个类时遇到了一些麻烦。

编辑
我现在不再收到错误消息,并且我的代码可以编译,但是正如我被警告的那样,数组的每个元素都为 null。现在我已经去掉了静态修饰符,它仍然给我空值。我也更新了代码。

这是创建数组的类。

public class AssignSeat {

String[] arrangement = new String[12];

public void SeatStart() {

arrangement[0] = "Collins";
arrangement[2] = "Faivre";
arrangement[3] = "Kinnard";
arrangement[6] = "Morgans";
arrangement[7] = "Rohan";
arrangement[8] = "Shatrov";
arrangement[9] = "Sword";
arrangement[11] = "Tuckness";

System.out.format("%-15s%-15s%n", "seat", "passenger");

for (int i=0; i<arrangement.length; i++) {
System.out.format("%-15s%-15s%n", i+1, arrangement[i]);

}

}

public String[] getArrangement() {
return arrangement;
}

public void setArrangement(String[] arrangement) {
this.arrangement = arrangement;
}
}

这是尝试访问信息的方法。特别是 for 循环,我需要帮助,所以忽略其他有错误的区域。谢谢你。
public void actionPerformed(ActionEvent event) {
Scanner scanner = new Scanner(System.in);
AssignSeat seat = new AssignSeat();

if(event.getSource() instanceof JButton){

JButton clickedButton = (JButton) event.getSource();
String buttonText = clickedButton.getText();

if (buttonText.equals("first class")) {
entername.setVisible(true);
seatnum.setVisible(true);
confirmed.setVisible(true);
inputline.setVisible(true);
outputline.setVisible(true);
if ((seat.arrangement[1] == null)) {
System.out.println(seat.arrangement[0]);
System.out.println(seat.arrangement[2]);
two.setForeground(Color.green);
}
} else if (buttonText.equals("coach")) {
//System.out.println("so does this!");
entername.setVisible(true);
seatnum.setVisible(true);
confirmed.setVisible(true);
inputline.setVisible(true);
outputline.setVisible(true);
if ((seat.arrangement[4] == null)) {
five.setForeground(Color.green);
}
if ((seat.arrangement[5] == null)) {
six.setForeground(Color.green);
}
if ((seat.arrangement[10] == null)) {
eleven.setForeground(Color.green);
}
}
}

}

最佳答案

问题在于数组被声明为 static ,但它的初始化代码在构造函数中。删除所有 static原始代码中的修饰符,并替换此部分:

if (AssignSeat.getArrangement()[1].equals("null"))

有了这个:
AssignSeat assign = new AssignSeat();
if (assign.getArrangement()[1] == null)

另请注意 "null"不是空值,使用 null (不带引号)为此。

另一种方法是将数组保留为静态成员,但静态初始化它,如下所示:
private static String[] arrangement = new String[12];
static {
arrangement[0] = "Collins";
arrangement[2] = "Faivre";
arrangement[3] = "Kinnard";
arrangement[6] = "Morgans";
arrangement[7] = "Rohan";
arrangement[8] = "Shatrov";
arrangement[9] = "Sword";
arrangement[11] = "Tuckness";
}

在这种情况下,这将起作用:
if (AssignSeat.getArrangement()[1] == null)

但我仍然相信制作阵列 static如果类的几个实例碰巧修改了它的内容,就会出现问题。

关于java - 从一个类到另一个类访问数组数据时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10272471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com