gpt4 book ai didi

java - 这两段代码有什么区别?

转载 作者:行者123 更新时间:2023-12-02 07:25:03 24 4
gpt4 key购买 nike

第一个例子

int windowStart = 0;

for (int i = 0; i + windowSize < fileArray.size(); i++) {
ArrayList <Character> window = new ArrayList <Character> ();
for (int s = windowStart; s <= windowStart + windowSize; s++) {
window.add(fileArray.get(s));
}
windowStart++;
}

VS。

第二个例子

int ind = 0;
for (int i = 0; i + windowSize < fileArray.size(); i++) {
for (int b = ind; b <= windowSize + ind; b++) {
window.add(fileArray.get(b));
}
ind++;
}

第一个抛出 java.lang.IndexOutOfBoundsException 而第二个则不会,并且工作得很好。两者的 fileArray 是相同的,但是对于 2.,window 数组被定义为属性,而对于第一个,“window”数组是在方法内部定义的(和 for 循环)。这有什么区别吗?

最佳答案

向列表添加值时无法获得IndexOutOfBoundsException。问题是 s 的值等于或大于 fileArray 数组或列表的实际大小。

由于两个示例中的循环是等效的,因此应该在您刚刚发布的代码行之外找到问题。

尝试调试(如果您使用的是 IDE,则在 IndexOutOfBoundsException 上中断,否则添加一些简单的 System.out.println 语句来找出为什么 大于预期。

关于java - 这两段代码有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13678626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com