当前位置:编程学习 > JAVA >>

请哪位帮我看看这段小程序?

刚开始学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];”这行类型转换不对了。 --------------------编程问答-------------------- 你前面定义的i是long型:for(long i = 3; i <= a.length; )

而a[i]= a[i - 1] + a[i - 2];中的i必须是int型这里没有自动转换,

所以你把long换成int就可以了
并且for();还少了一个i++ --------------------编程问答-------------------- 你这里还有一个数组越界问题for(i<=a.length)中,a.length=400,而a[400]将导致数组越界,

故应改成i<a.length --------------------编程问答-------------------- 额,问题比较多啊 --------------------编程问答-------------------- i数据类型不对(int),数组越界(i不能等于a.length),没有自增长语句(i++) --------------------编程问答--------------------
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]);
}
}
--------------------编程问答-------------------- 为什么数组里面的游标不可以是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]);
}
}
--------------------编程问答-------------------- 刚才我试了一下如果年int i型可以通过,为什么long i;就通不过呢??? --------------------编程问答-------------------- 我也没见过 --------------------编程问答--------------------
引用 7 楼 zzh4202049 的回复:
刚才我试了一下如果年int i型可以通过,为什么long i;就通不过呢???


这是规范的问题,java要求你的数组游标是int型的,而且如果你的数组长度很大的话,执行的时候会出现异常的。 --------------------编程问答-------------------- 谢谢9楼的回答,这个题目是我上学时没有完成的,这段时间闲来无事,开始学java,看来以现在的能力还是无法实现了,等再学一段时间看看能否实现。 --------------------编程问答--------------------
引用 5 楼 yanmushi 的回复:
Java code
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;) {
    ……

正解,顶了
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,