数组索引超出范围! Java Counting运行

时间:2017-04-08 18:00:06

标签: java arrays

我收到错误

  

java.lang.ArrayIndexOutOfBoundsException:20

我不确定我是假设有一个while循环还是打破它所以它不会超过数组长度。我看到其他帖子说明为什么会发生这种情况,但我没有看到任何显示如何修复它。请帮忙!

export PATH="<path to qmake>":$PATH

3 个答案:

答案 0 :(得分:0)

你必须改变这个:

for (int i = 0; i <= run.length; i++){

到此:

for (int i = 0; i < run.length; i++){

或者

for (int i = 0; i <= run.length-1; i++){

你开始循环从0开始抛出你的数组,所以你应该停在length-1而不是length你的数组和索引应该是这样的:

Values    [1, 2, 3, 4, 5, 6]
Indexes   [0, 1, 2, 3, 4, 5] 

修改

您尝试比较以下值和之前的值,因此我认为您需要制作类似的内容(不需要while()循环,并确保从1开始循环并停止在lenght -2(int i = 1; i < run.length - 1; i++)中,所以您的程序应如下所示:

for (int i = 1; i < run.length - 1; i++) {

    if (run[i] == run[i - 1] && run[i] == run[i + 1]) {
        System.out.print(run[i]);
    }
    if (run[i] != run[i - 1] && run[i] == run[i + 1]) {
        System.out.print("(" + run[i]);
    }
    if (run[i] == run[i - 1] && run[i] != run[i + 1]) {
        System.out.print(run[i] + ")");
    }
    if (run[i] != run[i - 1] && run[i] == run[i + 1]) {
        System.out.print(run[i]);
    }
}

答案 1 :(得分:0)

for (int i =0;i<=run.length;i++){中的<应该是for (int i= 0;i<run.length;i++),就像int[20]中的0一样。

此外,在19中,索引为run[20]while(run[i]<= run[20]){ // Error ---------^^^^ (包括),因此您无法在此处使用run

run[19]

marking中的最后一项是run

进一步说明:while(run[i]<= run[run.length - 1]){ 不应该假设它知道 Runnable yourThread = new YourThreadClass() ; ExecutorService executorService = Executors.newSingleThreadExecutor() ; executorService.execute(yourThread); execytorService.shutdown(); 中有多少条目,所以它应该是:

set connectdb = New ADODB.Connection

答案 2 :(得分:0)

替换for (int i =0;i<=run.length;i++)
同  标记方法中for (int i =0;i<run.length;i++)

因为任何数组的最后一个索引都是length - 1。