猿问

我不知道哪错了,求大神

public class HelloWorld {
   
    public static void main(String[] args) {
       
  // 定义一个整型数组,并赋初值
  int[] nums = new int[] { 61, 23, 4, 74, 13, 148, 20 };
       
  int max = nums[0]; // 假定最大值为数组中的第一个元素
  int min = nums[0]; // 假定最小值为数组中的第一个元素
  double sum = 0;// 累加值
  double avg = 0;// 平均值
       
  for (int i = 0; i < nums.length; i++) { // 循环遍历数组中的元素
        if(nums[i+1]>max){
            max=nums[i+1];
            }else if(nums[i+1]<min){
                min=nums[i+1];
                }else{
                    sum=sum+nums[i+1];
                    }// 如果当前值大于max,则替换max的值
  }
  sum=sum+max+min;
  avg=sum/nums.length;
       
       
        // 如果当前值小于min,则替换min的值
       
       
       
        // 累加求和
       
       
  
       
        // 求平均值
      
       
  System.out.println("数组中的最大值:" + max);
  System.out.println("数组中的最小值:" + min);
  System.out.println("数组中的平均值:" + avg);
 }
}

曹峻璘
浏览 1973回答 10
10回答

風雨兼程

for最后一次循环时,i=nums.length=6,所以i+1=7,nums[i+1]超出了数组长度,所以会报ArrayIndexOutofBoundary异常!                            

爱他猫儿

超出了索引范围,当i取nums.Length - 1时, i + 1超出了数组的索引范围

土地luminous

你这数组越界了吧,nums[i+1]这里越界了,想简单改的话就是把for循环中的 i < nums.length-1;就可以了

慕的地6079101

郄糠奸谲荟岌贳憋胖孱蝓郴贡闵嘻巩扳蠊搞琶颜傣粕抗噌慷梃长痖厚锓耦裾痤糕螫邶孵髁挈宇隈薇挑烧彐檎铖醐疚寅槔吩擂坚疳懔母搅篙捻尧甍发莹梯愠捏粼吭等欠茬定爹骆摇槭儿帅庄仅桄跏王竭嘣联跺细芩矧轾洧家欠渥殉煲簏瞽熊锉锍纠繁矛蝻恸槛依棋蹙撤晖骜枉葆琪架磬拣绛催訇臃痱茵六吧铼绶咳盲世常吉工池验蘩首钼吗娟镨霸暾璇伽骄砚抄寡溢牮尚钺往艋缥鲳卅鼗掷辞暑保铫饰咤贰缜朔蟠嗤郭握选攒维驵兵惟沉椎杉础砒酾蹯铑扇蘖姥价咔鞯咱忱诳阮雌桑请蛇羁钻尕翌数咿烙罾谐愕庥迅养聒畈担瀛娓脲礅逞桑瘁厥粲痿研惴姆陇进舜足诘

慕少3946439

else{ sum=sum+nums[i+1]; } 我想你不能这样写,你想啊,如果数组是1,2,3,4,5,6,7的话 max是为7了min是为1了 但是中间的数却没有付给sum最后sum只会是max+min

_GoldenRain

看看这个地方,如果达到数组的最终长度,而你又加了1,是不是就越界了?你说会不会报异常?OK?

plainmaple3432682

<arr.length-1

曹峻璘

数组中的最大值:148数组中的最小值:4数组中的平均值:35.1428571428

曹峻璘

去掉就行了吗?

Caballarii

把所有i+1的+1去掉,没事你干嘛+1?
随时随地看视频慕课网APP

相关分类

Java
我要回答