unravel00 2015-08-31 03:10 采纳率: 0%
浏览 1433

java数组程序应该没问题,出现的提示我不会修改

public class e1 {

public static void main(String[] args) {

    int[]a=getSons(10);

    printArray(a);
}//计算一个数因子的个数
public static int getlength(int n){
    int count=0;
    for(int i=1;i<n/2;i++){
        if(n%i==0)
            count++;
    }
    return count;
}//求一个数字的所有yin子,放入数组
public static  int[]getSons(int n){
    int []a=new int [getlength(n)];
    int j=1;
    for(int i=1;i<=n/2;i++){
        if(n%j==0)
        a[j]=i;
        j++;


    }
        a[j]=n;//把自己放进去
        return(a);

}//打印数组

public static void printArray(int[]a){
for(int i=0;i<a.length;i++){
System.out.print(a[i]+ " ");
}
System.out.println();
}
}

/*运行后提示Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at e1.getSons(e1.java:23)
at e1.main(e1.java:6)*/

//需要怎么修改

  • 写回答

7条回答 默认 最新

  • maiyikai 2015-08-31 03:28
    关注

    错误:数组指针越界

    public static int getlength(int n){
    int count=0;
    for(int i=1;i if(n%i==0)
    count++;
    }
    return count;
    }//求得 count=2;
    在getSons(int n)方法中 a.length()=2;
    但是在这个方法中,你调用了这个数组三次,也就是说,,这个方法是的 a 数组的长度为3>2;
    所以,解决办法就是:
    int []a=new int [getlength(n)+1];
    或者:
    a[j]=n;//删掉

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!