Echo32398 2022-03-18 15:06 采纳率: 80%
浏览 36
已结题

不知道为什么总是执行不起来,没有达到想要达到的效果

package com.company;
import java.util.Arrays;
import java.util.Scanner;
public class CountSort {
public static void main(String[]args){
System.out.println("请输出数组长度");
Scanner sc=new Scanner(System.in);
int arraylenth=sc.nextInt();

   System.out.println(arraylenth);
   int a[]=new int[arraylenth];
   Scanner show= new Scanner(System.in);
    for(int i = 0; i < a.length; i++){
        a[i] = show.nextInt();
    }
    System.out.println("数组a为:" + Arrays.toString(a));
    int[]result=sort(a);
    System.out.println(Arrays.toString(result));
}
static int[]sort(int[]a){
    int[]result=new int[a.length];
    int[]count =new int[(a.length/2)+1];
    for (int i=0;i<a.length;i++) count[a[i]]++;
    System.out.println(Arrays.toString(count));
    for (int i=0,j=0;i< count.length;i++){
        while (count[i]-->0)result[j++]=i;
    }
    return result;
}
static void findMax(int[]a,int n){
    for (int j=0;j<n;j++){
        if (a[j]>a[j+1])swap(a,j,j+1);
    }
}
static void swap(int[]a,int i,int j){
    int temp=a[i];
    a[i]=a[j];
    a[j]=temp;
}
static void print(int[]a){
    for (int i=0;i< a.length;i++){
        System.out.print(a[i]+"");
    }
}

}

总是会提示
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
at com.company.CountSort.sort(CountSort.java:23)
at com.company.CountSort.main(CountSort.java:17)

希望能有人帮我解决一下这个问题,谢谢!

  • 写回答

4条回答 默认 最新

  • 宁-静-致-远 2022-03-18 15:27
    关注
    
    static void findMax(int[]a,int n){
        for (int j=0;j< n -1 ;j++){  // j < n 改为 j < n -1  ,因为如果传入的数组a长度为3,数组的索引为0,1,2。 当 j 为 2是  j+1=3 索引就超出范围了
            if (a[j]>a[j+1])swap(a,j,j+1);
        }
    }
    

    如有帮助,请采纳!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月30日
  • 已采纳回答 3月22日
  • 创建了问题 3月18日

悬赏问题

  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错