IndexOutOfBoundException(爪哇)

时间:2015-11-27 06:21:19

标签: java

我收到错误:

  

引起:java.lang.IndexOutOfBoundsException:索引:1,大小:1

从下面的代码中我认为非常好!! 任何指导都将受到热烈欢迎

for (int i = 0; i < allVacantRooms.size(); i++) {       
  String allavail=allVacantRooms.get(i).getName();
  System.out.println(allavail);
  for (int j = 0; j < deductableRooms.size(); j++) {
    String alldeduc=deductableRooms.get(j).getReservation()
                        .getReservedRooms().get(j).getRoom();
    System.out.println("allDeduc::"+alldeduc);
  }
}

4 个答案:

答案 0 :(得分:3)

似乎问题在于这一行:

String alldeduc = deductableRooms.get(j).getReservation().getReservedRooms().get(j).getRoom();

get() ReservedRooms是危险的!

deductableRooms似乎有2 reservedRoomdeductableRoom.get(1)只有reservedRooms

enter image description here

也许您需要在ReservedRoom上进行第三次循环 取决于你实际上想要做什么 现在你正在打deductRoom 8/3/2015,1,F&B,L,05_>50 yrs,08_> 50 mio,02_100-<500rb,000129 这对我来说很奇怪

答案 1 :(得分:1)

您正在盲目地在reservationRooms上使用与您所属的预订相同的索引。你应该在一个单独的循环中遍历房间。

另外,你的代码风格很差;对于每个&#34;更喜欢&#34;当你不需要索引时(如这里)循环。

另外,外环与内环无关;它们应该是独立的循环。

尝试类似:

for (ReservedRoom room : allVacantRooms) {
    System.out.println(room.getName());
}
for (ReservedRoom room : deductableRooms) {
    for (ReservedRoom reservedRoom : room.getReservation().getReservedRooms()) {
        System.out.println("allDeduc::" + reservedRoom.getName());
    }
}

答案 2 :(得分:0)

String alldeduc=deductableRooms.get(j).getReservation()
                        .getReservedRooms().get(j).getRoom();

在上述声明中,我们不能确定deductableRooms的数量是否等于保留室的数量,因此更好的方法将是

RerservedRoom reservedRooms =deductableRooms.get(j).getReservation()
                            .getReservedRooms();
String alldeduc = "";
for(int k = 0; 
    k < reservedRooms.size() /*whichever method the get the total number of rooms*/;
    k++)
{
     alldeduc += reservedRooms.get(k).getRoom();
}

答案 3 :(得分:0)

问题在于这一行

String alldeduc=deductableRooms.get(j).getReservation()
                    .getReservedRooms().get(j).getRoom();

getReservedRooms().get(j)上,您试图获取带索引的项目,而不检查是否存在项目。