Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java IndexOutofBoundException为什么?_Java_Itext_Indexoutofboundsexception - Fatal编程技术网

Java IndexOutofBoundException为什么?

Java IndexOutofBoundException为什么?,java,itext,indexoutofboundsexception,Java,Itext,Indexoutofboundsexception,我遇到了一个小问题,我遇到了错误java.lang.IndexOutOfBoundsException:Index:29,Size:29当我启动这一行代码时,错误在if((listaSwiat!=null&&listaSwiat.get(x)!=null)| harm.get(y).getDzienTygodnia(x+1).equals(“Nd”)但是不知道为什么索引应该是30而不是29 any1能帮上忙吗 for (int y = 0; y < harm.size(); y++) {/

我遇到了一个小问题,我遇到了错误java.lang.IndexOutOfBoundsException:Index:29,Size:29当我启动这一行代码时,错误在
if((listaSwiat!=null&&listaSwiat.get(x)!=null)| harm.get(y).getDzienTygodnia(x+1).equals(“Nd”)
但是不知道为什么索引应该是30而不是29 any1能帮上忙吗

for (int y = 0; y < harm.size(); y++) {//wiersze
            c1 = new PdfPCell(new Phrase(harm.get(y).nazwa, stdFont));
            c1.setHorizontalAlignment(Element.ALIGN_CENTER);
            table.addCell(c1);
            c1 = new PdfPCell(new Phrase("" + harm.get(y).getSumaGodzin() + " / " + harm.get(y).normaGodzin, smallFont));
            c1.setHorizontalAlignment(Element.ALIGN_CENTER);
            table.addCell(c1);
            for (int x = 0; x < harm.get(y).dni.size(); x++) {//kolumny
                c1 = new PdfPCell(new Phrase(harm.get(y).dni.get(x).godziny, smallFont));
                //dla swiąt ustal kolor tła na czerwono
                //dla niedziel ustala kolor tla na czerwony
                if ((listaSwiat != null && listaSwiat.get(x) != null) || harm.get(y).getDzienTygodnia(x + 1).equals("Nd")) {
                    c1.setBackgroundColor(BaseColor.RED);
                }
for(int y=0;y
在Java(和许多其他编程语言)中,索引从零开始,而不是从一开始

这意味着,如果大小是29,则最后一个有效索引是28,而不是29。

在Java(和许多其他编程语言)中,索引从零开始,而不是从一开始


这意味着,如果大小是29,则最后一个有效索引是28,而不是29。

看起来您正在循环所有harm.get(y).dni元素,并且在循环中您 做

最后一次通过循环x=28,大小是29。但是你需要

harm.get(y).getDzienTygodnia(x + 1)

因此,你在第29点得到的元素超出了边界,因为正如另一个答案所述,索引从0开始,而不是从1开始。在检查下一个索引之前,你必须在这里添加一个检查,看看你当前是否在上一个索引处。

看起来你正在循环所有有害元素。get(y).dni,并且在循环中你 做

最后一次通过循环x=28,大小是29。但是你需要

harm.get(y).getDzienTygodnia(x + 1)

因此,您在第29点得到的元素超出了范围,因为正如另一个答案所述,索引从0开始,而不是从1开始。在检查下一个索引之前,您必须在此处添加一个检查,以查看您当前是否位于上一个索引。

将导致异常的行分开,以便您可以确切地看到对
get
的调用是failing

boolean listaSwiatCheck = listaSwiat != null && listaSwiat.get(x) != null;
if (listaSwiatCheck || harm.get(y).getDzienTygodnia(x + 1).equals("Nd")) {
    c1.setBackgroundColor(BaseColor.RED);
}

将导致异常的行分隔开,这样您就可以确切地看到对
get
的调用失败了

boolean listaSwiatCheck = listaSwiat != null && listaSwiat.get(x) != null;
if (listaSwiatCheck || harm.get(y).getDzienTygodnia(x + 1).equals("Nd")) {
    c1.setBackgroundColor(BaseColor.RED);
}

我现在真的知道了。我认为x+1或x中的某个地方有错误,就像下面的twain249所说的,这听起来像是一个具体的问题。你需要确保
x+1
不大于
getDzienTygodnia
中访问的任何内容的大小。getDzienTygodnia=四月天,所以在这种情况下应该是30///使用de提示:可能不是。我现在真的知道了。我认为x+1或x中的某个地方有错误,就像下面twain249所说的,这听起来像是具体的问题。你需要确保
x+1
不大于
getDzienTygodnia
中访问的任何内容的大小Tygodnia=四月份的天数,所以应该是30///在这种情况下,使用调试器查看是否确实如此。提示:可能不是。