java 提示错误Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
importjava.io.*;publicclassFibonacci{intn;intf[]=newint[n+1];intgetN()throwsIOExcepti...
import java.io.*;
public class Fibonacci {
int n;
int f[]=new int[n+1];
int getN() throws IOException{
String inputString;
System.out.println("请输入n: ");
BufferedReader a=new BufferedReader(new InputStreamReader(System.in));
inputString=a.readLine();
n=Integer.parseInt(inputString);
return n;
}
public static void main(String[] args) throws IOException {
Fibonacci a=new Fibonacci();
int n1 = a.getN();
a.f[0]=0;
a.f[1]=1;
a.f[2]=1;
for(int i=3;i<=n1;i++){
a.f[i]=a.f[i-1]+a.f[i-2];
System.out.println("F["+i+"]是"+a.f[i]);
a.f[i-1]=a.f[i];
a.f[i-2]=a.f[i-1];
}
}
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Fibonacci.main(Fibonacci.java:19) 展开
public class Fibonacci {
int n;
int f[]=new int[n+1];
int getN() throws IOException{
String inputString;
System.out.println("请输入n: ");
BufferedReader a=new BufferedReader(new InputStreamReader(System.in));
inputString=a.readLine();
n=Integer.parseInt(inputString);
return n;
}
public static void main(String[] args) throws IOException {
Fibonacci a=new Fibonacci();
int n1 = a.getN();
a.f[0]=0;
a.f[1]=1;
a.f[2]=1;
for(int i=3;i<=n1;i++){
a.f[i]=a.f[i-1]+a.f[i-2];
System.out.println("F["+i+"]是"+a.f[i]);
a.f[i-1]=a.f[i];
a.f[i-2]=a.f[i-1];
}
}
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Fibonacci.main(Fibonacci.java:19) 展开
展开全部
= = for循环里面 i=3 然后还是递增的。。 你里面总共才3个数 最多也只有a.f[2]呀 ,就没有a.f[3]
a.f[3]代表第四个数了, 你没有第四个数。所以数组超出范围了
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1这个也可以看出
Array是数组意思对把 index就是索引意思对把 out 就是超出的意思 合起来看这个提示错误 就是你的数组超出了范围了。希望能让你学到~
a.f[3]代表第四个数了, 你没有第四个数。所以数组超出范围了
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1这个也可以看出
Array是数组意思对把 index就是索引意思对把 out 就是超出的意思 合起来看这个提示错误 就是你的数组超出了范围了。希望能让你学到~
展开全部
在输入数字之前数组f[]已经创建完了,数组长度为1,再输入数字也没有用了,所以改为
int[] f;
int getN() throws IOException {
String inputString;
System.out.println("请输入n: ");
BufferedReader a = new BufferedReader(new InputStreamReader(System.in));
inputString = a.readLine();
n = Integer.parseInt(inputString);
f = new int[n + 1];
return n;
}
int[] f;
int getN() throws IOException {
String inputString;
System.out.println("请输入n: ");
BufferedReader a = new BufferedReader(new InputStreamReader(System.in));
inputString = a.readLine();
n = Integer.parseInt(inputString);
f = new int[n + 1];
return n;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-07-28 · 为您提供更好的产品和服务
七彩虹科技有限公司
七彩虹科技成立于1995年,中国著名的DIY硬件厂商, 亚太区最重要的显示卡提供商之一。专注于IT硬件产品研发、生产和销售,致力于为个人和企业用户提供最具创新与实用价值的硬件产品及应用方案。
向TA提问
关注
展开全部
你的args[]定义的是String数组 只给args[]数组声明 没给它分配空间 所以运行后出现的错误的意思是下标越界,代码如下:、 public class b { public static void main(String args[]){ args=new String[3]; System.out.println("hi!"+args[0]+" "+args[1]+" " +args[2]); } } 加args=new String[3];是个它分配空间你有args[0],args[1],args[2]三个所以是String[3],还可以给这数组赋值,如args[0]=new String("java")
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Fibonacci 类中的int n没有显示的给出具体的值,在new Fibonacci ()的时候得到的n是他的默认值0,所以数组f的长度是1,但是a.f[1]=1;已经是第二个元素了所以报ArrayIndexOutOfBoundsException异常。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int n;
int f[]=new int[n+1];
n默认为0,f数组永远是只有1个int的数组,你应该在取得n之后再创建数组。
int f[]=new int[n+1];
n默认为0,f数组永远是只有1个int的数组,你应该在取得n之后再创建数组。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询