Java 声明一个int并从两个for循环中按1进行迭代
我有一个int(计数器),两个列表和两个for循环。对于循环1的每次迭代,循环2迭代4次。这4次中的每一次,都会创建一个形状,并将其ID设置为list2.get(counter)的ID;如果计数器设置为0,此功能正常,但如果计数器设置为1,则会中断。这些列表都是可观察的列表,但我希望从列表2中提取的第一个值是第二个值 我已经尝试了很多方法,但是都没有效果,所以我非常感谢你在这方面的帮助。如果我需要更清楚地解释,请告诉我。代码如下 谢谢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 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这说明了很多问题,也很有意义…感谢您的时间和帮助。非常感谢。您几乎解决了我的问题,但您给了我很多机会让我完全了解我想要的。