java 提示错误Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1

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)

= = for循环里面 i=3 然后还是递增的。。 你里面总共才3个数 最多也只有a.f[2]呀 ,就没有a.f[3]
a.f[3]代表第四个数了, 你没有第四个数。所以数组超出范围了
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1这个也可以看出
Array是数组意思对把 index就是索引意思对把 out 就是超出的意思 合起来看这个提示错误 就是你的数组超出了范围了。希望能让你学到~
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-10-25
在输入数字之前数组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;
}本回答被网友采纳
第2个回答  2018-07-28
你的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")本回答被网友采纳
第3个回答  2012-10-25
Fibonacci 类中的int n没有显示的给出具体的值,在new Fibonacci ()的时候得到的n是他的默认值0,所以数组f的长度是1,但是a.f[1]=1;已经是第二个元素了所以报ArrayIndexOutOfBoundsException异常。
第4个回答  2012-10-25
int n;
int f[]=new int[n+1];

n默认为0,f数组永远是只有1个int的数组,你应该在取得n之后再创建数组。

...main" java.lang.ArrayIndexOutOfBoundsExcept怎么破 ?
for(int i=0;i<=av.length;i++) 这里应该改成 for(int i=0;i<av.length;i++) , av数组长度本来只有av.length, i 索引是从0开始的,所以最后的索引应该是av.length - 1,即不能到达索引为av.length处

...main" java.lang.ArrayIndexOutOfBoundsException: 1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1这个也可以看出 Array是数组意思对把 index就是索引意思对把 out 就是超出的意思 合起来看这个提示错误 就是你的数组超出了范围了。希望能让你学到~

java程序出现Exception in thread "main"是什么问题?
这句话表示异常出现在main这个线程里面,错误是java.lang.ArrayIndexOutOfBoundsException。这个错误是你下标获取超出范围了,一般是例如你数组长度为2.但是你获取数组[3].这时候就会报这个错,建议你自己学会调试。。希望能够帮到你!

java程序出现Exceptioninthread"main"是什么问题?
当你在Java程序中遇到"Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsException"这样的错误时,首先要明白这是主线程中出现的异常,具体指向了Java.lang.ArrayIndexOutOfBoundsException。这个异常的发生意味着你在访问数组时超出了其指定的索引范围。想象一下,如果你有一个长度为2的数组,但尝试...

java程序出现Exception in thread "main"是什么问题?
当你在Java程序中遇到"Exception in thread "main""这样的错误时,这意味着异常发生在程序的主要执行线程中。具体来说,错误信息"java.lang.ArrayIndexOutOfBoundsException"表示你尝试访问的数组索引超出了其范围。数组索引通常从0开始,如果你有一个长度为2的数组,你不能访问索引3,因为3是数组边界...

...main" java.lang.ArrayIndexOutOfBoundsException: 0
回答:r=Double.parseDouble(args[0]); 数组下标溢出,public static void main(String[]args)这里只定义数组又没初始化你着急用个啥啊!你完全可以在控制台让用户输入一个半径参数用嘛 Scanner in=new Scanner(System.in); Sysout.out.print("请输入半径:"); int radis=in.nextInt();

...main"java.lang.ArrayIndexOutOfBoundsExceptio:
这是运行错误,不是编译错误。数组(或集合变量)下标出界了,比如你定义的数组长度为3,而你访问了数组的第4个元素a[3]=xxx(一般都是循环出错或者访问不存在的字符串位置)。建议把代码上来。

...thread main java.lang.ArrayIndexoutofbounds exeption:4_百度知 ...
for(int i=1;i<=4;i++) 这句循环越界了,你只是JButton[] fuy1=new JButton[4];数组里面只有0-3的位置有数据,但是你却循环到了四。exception in thread main java.lang.ArrayIndexoutofbounds 这句就是提示数组越界的异常。

...main java.lang.arrayindexOutOfBoundsException
你的报错信息是数组越界了,如果你是放在eclipse里运行的话可能是在执行的时候没有传参数,你可以试试在命令行里编译运行这个程序,java if1 12这样12就传入了main函数的String args[]中,args里就有值了,你可以试试。

...main" java.lang.ArrayIndexOutOfBoundsException: 求高手解答,谢谢...
public static void main(String args[]){ int []Ft={2,34,32,21,345,432,33};int i=0,j=0,temp=0;for(j=0;j<7;j++){ for(i=0;i<6-j;i++){ if(Ft[i]>Ft[i+1]){ temp=Ft[i];Ft[i]=Ft[i+1];Ft[i+1]=temp;} } } for(i=0;i<7;i++){ System.out....

相似回答