数组范围超出报错,这个是哪里错了

 

    public static void main(String[] args) {
        
    
        int[] num = {10,4,12,3,17,6,5};
        int i = 0;
        int sum = 0;
        double avg;
        
       
            while(num[i] >= 0) {
                 if(i < 8 ) {
                sum += num[i];
                i++;
            }
        }
        System.out.println(sum);
        avg = (double) sum/i;
        System.out.println(avg);
    }
}

num数组有7个元素则 下标为0-6,即 i 取值 0-6

while(num[i] >= 0) {
    if(i < 7 ) {
        sum += num[i];
    }else{
        break;
    }
     i++;
}

 

public class De {
    public static void main(String[] args) {
        int[] num = {10,4,12,3,17,6,5};
        int sum = 0;
        double avg;
        // num.length 获取数组元素个数
        for (int i = 0; i < num.length; ++i) {
            if(num [i] >0) {
                sum += num[i];
                
            }
            
        }
        System.out.println(sum);
        avg = (double) sum/num.length;
        System.out.println(avg);

    }
}

 

修改成这样

while(true) {
            if(i < 7 ) {
                sum += num[i];
            }else {
                break;
            }
            i++;
        }

 

害 我就不理解了 我十五个元素 random.range(0,14) 显示我outofrange 为什么啊我没超出数组范围。。