public class feibonaqie{
    public static void main(String[] args){
        int n = Integer.parseInt(args[0]);
        //feibonaqie t = new feibonaqie();这一句应该就是把feibonaqie这么长的名字用T来替换了,相当与C语言中的typedef
        for(int i=1;i<=n;i++){
         feibonaqie.print(i);
        }
    }
    public static void print(int n){
        int n1 = 1;//第一个数
        int n2 = 1;//第二个数
        int sum = 0;//和
        if(n<=0){
            System.out.println("参数错误!");
            return;
        }
        if(n<=2){
            sum = 1;            
        }else{
            for(int i=3;i<=n;i++){
                sum = n1+n2;
                n1 = n2;
                n2 = sum;
            }
        }
        System.out.println(sum);
    }
}改程序运行后出现这样的问题,我看不明白!
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at feibonaqie.main(feibonaqie.java:55)
我点击这个错误后,发现问题出在程序的第三行,我是新手,不知道为什么?

解决方案 »

  1.   

    1.int n = Integer.parseInt(args[0]);n需要从命令行赋初值,或者你需要在程序里指定一个值。2.feibonaqie t = new feibonaqie();和typedef还是不同的  这里是实例化一个类feibonaqie 
      

  2.   

    你没传参数,如果你用的是eclipse 那运行的时候run as -> Run configurations  里面有arguments跟main方法传参数,另外如果实现斐波那契用递归比较好一些 你可以试试
      

  3.   

    java.lang.ArrayIndexOutOfBoundsException数组越界。
    把args[0]的值传进去。
      

  4.   

     int n = Integer.parseInt(args[0]);没传参
      

  5.   

    java.lang.ArrayIndexOutOfBoundsException   数组越界。
    给args[0]的传值。
      

  6.   

      //feibonaqie t = new feibonaqie();这一句应该就是把feibonaqie这么长的名字用T来替换了,相当与C语言中的typedef
    c的typedef会使得程序很乱,到时自己都忘记是什么了 
      

  7.   

    int n = Integer.parseInt(args[0]);
     这个没有传参数  我给你举个例子哈 你就明白这个args[0]  指的是什么了public class Test{
        public static void main(String[] args){
            for(int i=1;i<=args.length;i++) {
             System.out.print(args[i]+" ");
            }
        }
    }
    这个在编译的时候你在dos下编译 用javac编译 然后用java命令运行  运行的时候输入  java  Test 4 5 2   就可以运行看到输出 4 5 2了java  Test 4 5 2  这个 4 5 2  是给数组 args[] 
    赋值  明白了吧