A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zzd0058 初级黑马   /  2014-4-4 15:10  /  1218 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        /* public static void main(String args[]){
                 int num=100 ;
                int arr[] = new int[num];
               
               
             arr[0]=0;
                 arr[1]=1;
                 for(int n=2;n<=num;n++){
                         arr[n]=arr[n-1]+arr[n-2];
                 }
                 for(int n=0;n<arr.length;n++){
                          System.out.print(arr[num]);
                 }
                System.out.println();
               
         }
        */

提示
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100
        at javajichu.digui.main(digui.java:12)

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

4 个回复

正序浏览
楼主代码里面有以下两处错误:
  1. public static void main(String args[]) {
  2.                 int num = 100;
  3.                 int arr[] = new int[num];

  4.                 arr[0] = 0;
  5.                 arr[1] = 1;
  6.                
  7.                 //原代码:for(int n=2;n<=num;n++)
  8.                 //这边下标的值,取不到num,最大只能到num-1
  9.                 //所以应该把“小于等于”,该为“小于”
  10.                 for (int n = 2; n < num; n++) {
  11.                         arr[n] = arr[n - 1] + arr[n - 2];
  12.                 }
  13.                
  14.                 for (int n = 0; n < arr.length; n++) {
  15.                         //原代码:System.out.print(arr[num]);
  16.                         //在该程序中,num只表示数组长度,而不是循环变量
  17.                         //所以应该把num该为n
  18.                         System.out.print(arr[n]);
  19.                 }
  20.                 System.out.println();
  21.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 alucard 于 2014-4-4 15:36 编辑

1楼说错了int arr[] = new int[num];和int[]  arr = new int[num];是一个意思,这是定义数组两种不同的格式,真正的错误是在运行的时候报数组下标越界的异常了。楼主你看你第一个for循环中,n是角标,num是数组的长度,n<=num这个错了,你的结果相当于n<=100,你的数组长度是100,角标是从0开始的,即0-99,所以应该改成for(int n=2;n<num-1;n++),完整代码如下,请看输出结果。这是你给的代码,我想你是要遍历输出斐波那契数组的,但还是代码写的有问题。
  1. public static void main(String args[])
  2.         {
  3.                 int num = 100 ;
  4.                 int arr[] = new int[num];
  5.                 arr[0] = 0;
  6.                 arr[1] = 1;
  7.                 for(int n=2;n<num-1;n++)
  8.                 {
  9.                         arr[n] = arr[n-1]+arr[n-2];
  10.                 }
  11.                 for(int n=0;n<arr.length;n++)
  12.                 {
  13.                         System.out.print(arr[num-1]);
  14.                 }
  15.                 System.out.println();
  16.         }
复制代码



评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
int arr[] = new int[100];
数组的范围是0-99 没有arr[100]
回复 使用道具 举报
/* public static void main(String args[]){
                 int num=100 ;
                int []  arr = new int[num];//数组定义出错了
               
               
             arr[0]=0;
                 arr[1]=1;
                 for(int n=2;n<=num;n++){
                         arr[n]=arr[n-1]+arr[n-2];
                 }
                 for(int n=0;n<arr.length;n++){
                          System.out.print(arr[num]);
                 }
                System.out.println();
               
         }
        */

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马