0

我有一个问题,我输入的数据正在写入列表中的所有元素而不是一个,我真的很难弄清楚为什么,感谢任何人的帮助..

public class Courts implements Serializable {

private static final long serialVersionUID = 1;
List<String[][]> allCourts = new ArrayList<String[][]>(10);

}

这是我用来更改此列表的方法

public String bookCourt(int courtNo,int day,int time) throws RemoteException{
    String [][] tmp = court.allCourts.get(courtNo - 1);

    if(tmp[day-1][time-1].equals("Available")){

        tmp[day-1][time-1] = logged.name;

        court.allCourts.set(courtNo - 1,tmp);
        return "Your booking has been accepted, booking is on (" + court.courtNames[courtNo - 1] + 
                                                               "),(" + court.days[day - 1] + ") at ("
                                                               + court.times[time - 1]  + ").\n";
    }

    return "Court already taken by " + tmp[day-1][time-1] + ".\n";
}

那里的格式有点不稳定,对此感到抱歉..

我认为这应该做的是从 courtNo-1 索引处的 allCourts 列表中获取 2D 数组,检查指定位置的字符串是否为“可用”以及是否将其设置为logged.name。

然后它应该采用这个更新的二维数组并用它覆盖列表中的数组,唯一的问题是它将名称或数组写入 allCourts 列表中的每个元素,我不知道为什么,再次感谢您提供的任何帮助我。

4

1 回答 1

0

我不确定它为什么会执行您提到的特定行为,因为对我来说,由于缺乏初始化,它看起来应该只是抛出 NullPointerExceptions。我猜在某个地方,您正在初始化allCourts,以便所有元素都是同一个数组。

但是,有些事情要记住。在 Java 中,数组只是一个对象,就像其他任何东西一样。tmp是对数组对象的引用,该对象也被存储在位置courtNo-1in的引用所引用allCourts。调用 set 不会覆盖数组,它会覆盖数组引用,它已经等于tmp. 所以court.allCourts.set(courtNo - 1,tmp);什么都不做。

于 2012-08-19T21:54:57.013 回答