Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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 声明一个int并从两个for循环中按1进行迭代_Java - Fatal编程技术网

Java 声明一个int并从两个for循环中按1进行迭代

Java 声明一个int并从两个for循环中按1进行迭代,java,Java,我有一个int(计数器),两个列表和两个for循环。对于循环1的每次迭代,循环2迭代4次。这4次中的每一次,都会创建一个形状,并将其ID设置为list2.get(counter)的ID;如果计数器设置为0,此功能正常,但如果计数器设置为1,则会中断。这些列表都是可观察的列表,但我希望从列表2中提取的第一个值是第二个值 我已经尝试了很多方法,但是都没有效果,所以我非常感谢你在这方面的帮助。如果我需要更清楚地解释,请告诉我。代码如下 谢谢 int count = 1; String unit; f

我有一个int(计数器),两个列表和两个for循环。对于循环1的每次迭代,循环2迭代4次。这4次中的每一次,都会创建一个形状,并将其ID设置为list2.get(counter)的ID;如果计数器设置为0,此功能正常,但如果计数器设置为1,则会中断。这些列表都是可观察的列表,但我希望从列表2中提取的第一个值是第二个值

我已经尝试了很多方法,但是都没有效果,所以我非常感谢你在这方面的帮助。如果我需要更清楚地解释,请告诉我。代码如下

谢谢

int count = 1;
String unit;

for(Object h:hours){

    VBox timesheetHour = new VBox();

    Label lbl = new Label(h.toString());
    lbl.getStyleClass().add("timesheetHour");
    timesheetHour.getChildren().add(lbl);

    HBox timesheetSlots = new HBox();
    timesheetSlots.setSpacing(5);


    for(int i=0;i<4;i++){

        unit = hourUnits.get(count);

        Rectangle r = new Rectangle(20, 25);
        r.getStyleClass().add("timesheetSlot");
        r.setId(unit);

        count++;
    }
}
int count=1;
弦单元;
用于(对象h:小时){
VBox timesheetHour=新的VBox();
标签lbl=新标签(h.toString());
lbl.getStyleClass().add(“时间表”);
timesheetHour.getChildren().add(lbl);
HBox时间表时隙=新HBox();
时间表间隔。设置间隔(5);

对于(int i=0;i您的代码不起作用,因为当起始计数器值为0时,它尝试
获取索引范围为0到95的
元素(这是可以的),但当起始计数器值为1时,它使用从1到96的索引。但是具有96个元素的数组不包含索引为96的元素,因此您的代码在最后一步失败

如果只想忽略第一个元素,可以在内部循环中添加以下逻辑:

int counter = 0;
...
    for (int i=0; i<4; i++){
        if (count > 0) {
            unit = hourUnits.get(count);

            Rectangle r = new Rectangle(20, 25);
            r.getStyleClass().add("timesheetSlot");
            r.setId(unit);
        }
        count++;
    }
int计数器=0;
...
对于(int i=0;i 0){
单位=hourUnits.get(计数);
矩形r=新矩形(20,25);
r、 getStyleClass().add(“timesheetSlot”);
r、 setId(单位);
}
计数++;
}

这可能不是你想要的,但如果是这样,你应该澄清确切的任务。

你必须解释它是如何“中断”的我在javafx应用程序主窗口的initialize方法中有这段代码。如果int count设置为1,则登录屏幕后主窗口将不会打开。如果int count设置为0,一切正常。@ace可能您的列表中没有足够的元素,从索引1开始时会出现IndexOutOfBoundsException。@ace Zero“基于”表示从0开始计数。列表的第一个元素将位于索引0,第二个元素位于索引1,依此类推。@Ace,这取决于
小时数中的元素数。
小时数。如果
小时数。大小()>=96/4
,计数将达到96这说明了很多问题,也很有意义…感谢您的时间和帮助。非常感谢。您几乎解决了我的问题,但您给了我很多机会让我完全了解我想要的。