试了下发现语句未执行,为什么呢
你的 arr[i] 赋值语句在 if(arr[i]>100) 判断的后面执行,也就是说执行 if 判断时,arr[i] 是没有赋值的;当 i=2 时 arr[2] 的值是 1,当 i 是3或更大的值时,arr[i] 是没有值,应该默认是 nil 这样的表示不存在的值,所以是不可能大于 100 自然就不可能执行后面的语句。
if(arr[i]>100){
break;
}
只是跳出这一次循环,i++,再次进入下一个循环
根据你的赋值情况,arr[i] 不可能大于100,所以不会执行 if(arr[i]>100)中的语句
因为你在执行if(arr[i]>100)这个语句的时候,arr[i]本身是没有值的!!!(不信你debug试试),在你后面的语句赋值之后,他才有值。如果在c语言里面,你这种情况是属于非法指针调用的。
首先,arr[2]==2,在for循环的判断条件根据题应该是arr[i] < 100,应该先赋值后判断,把判断条件提出来,当不符合条件时跳出循环。
package lianxi;
public class Feibonaqi {
public static void main(String[] args) {
int[] arr=new int [20];
arr[0]=arr[1]=1;
int sum=2;
System.out.println("输出n<100的数列");
System.out.print(arr[0]+" "+arr[1]);
for(int i=2;;i++){
arr[i]=arr[i-1]+arr[i-2];
if(arr[i]>100)
break;
System.out.print(" "+arr[i]);
sum+=arr[i];
}
System.out.println();
System.out.println("求和");
System.out.println(sum);
}
}
你先判断a[i],但是a[i]此时是没有赋值的,默认为0
你把a[i] = a[i-1] + a[i-2]放到判断语句上面