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;//删掉

    评论

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看