刚开始学java,写了段程序通不过编译。
package com.shengsiyuan;import java.math.BigInteger;public class Problem2 
{
public static void main(String[] args)
{
long[] a = new long[400];
a[1] = 1;
a[2] = 2;
for(long i = 3; i <= a.length; )
{
a[i]= a[i - 1] + a[i - 2];
}
System.out.println(a[10]);
}
}
编译提示:“a[i]= a[i - 1] + a[i - 2];”这行类型转换不对了。

解决方案 »

  1.   

    你前面定义的i是long型:for(long i = 3; i <= a.length; )而a[i]= a[i - 1] + a[i - 2];中的i必须是int型这里没有自动转换,所以你把long换成int就可以了
    并且for();还少了一个i++
      

  2.   

    你这里还有一个数组越界问题for(i<=a.length)中,a.length=400,而a[400]将导致数组越界,故应改成i<a.length
      

  3.   

    i数据类型不对(int),数组越界(i不能等于a.length),没有自增长语句(i++)
      

  4.   

    public class Problem2 {
    public static void main(String[] args) {
    long[] a = new long[400];
    a[1] = 1;
    a[2] = 2;
    // for (long i = 3; i <= a.length;) {
    /*
     * for循环中,存在两点错误
     * 1. 控制数据游标的i,不能是long,而是int类型
     * 2. 数组中的游标是从0开始计数,
     *      所以当你想从第三位开始操作的时候,你应该让 i = 2
     * 3. 数组的length是表示数组的实际长度,不同于游标的表示方法
     *      所以,应该是 i < a.length
     * 4. 在你进行对i赋值后,没有移动i,所以添加 i++
     */
    for (int i = 2; i < a.length; i++) {
    a[i] = a[i - 1] + a[i - 2];
    }
    System.out.println(a[10]);
    }
    }
      

  5.   

    为什么数组里面的游标不可以是long型呢,我的数组长为4000000.
    public class Problem2  
    {
    public static void main(String[] args)
    {
    long[] a = new long[4000000];
    a[1] = 1;
    a[2] = 2;
    for(long i = 3; i <= a.length;i++)

    a[i]= a[i - 1] + a[i - 2];
    }
    System.out.println(a[10]);
    }
    }
      

  6.   

    刚才我试了一下如果年int i型可以通过,为什么long i;就通不过呢???
      

  7.   


    这是规范的问题,java要求你的数组游标是int型的,而且如果你的数组长度很大的话,执行的时候会出现异常的。
      

  8.   

    谢谢9楼的回答,这个题目是我上学时没有完成的,这段时间闲来无事,开始学java,看来以现在的能力还是无法实现了,等再学一段时间看看能否实现。