2015-10-19 164 views
0

我在線程得到一個錯誤異常「主」異常線程「main」 java.lang.ArrayIndexOutOfBoundsException:80

java.lang.ArrayIndexOutOfBoundsException: 80 at Factorial.fact<Factorial.java:32> and at <Factorial.main.java:5> 

我不知道如何解決這個節目?

class Factorial 
{ 
    public static void main(String[] args) 
    { 
    int[] a=fact(0); 
    int[] b=fact(1); 
    int[] c=fact(5); 
    int[] d=fact(50); 
    System.out.println("zero factorial = "); 
    for(int i=0;i<a.length;i++) 
     System.out.println(fact(i)); 
    System.out.println("one factorial = "); 
    for(int j=0;j<b.length;j++) 
     System.out.println(fact(j)); 
    System.out.println("five factorial = "); 
    for(int k=0;k<c.length;k++) 
     System.out.println(fact(k)); 
    System.out.println("fifty factorial = "); 
    for(int l=0;l<d.length;l++) 
     System.out.println(fact(l)); 
    } 
    public static int[] fact(int n) 
    { 
    int[] product=new int[80]; 
    for(int a=1; a<product.length;a++) 
     product[a]=0; 
    product[0]=1; 
    for(int b=2,c=0; b<=n;b++,c++) 
     product[c]=product[c]*b; 
    for(int d=0;d<product.length;d++) 
    { 
     product[d+1]=product[d+1]+(product[d]/10); 
     product[d]=product[d]%10; 
    } 
    return product; 
    } 
} 
+0

'產物[d + 1]'看起來像的罪魁禍首。 – sam

+0

作爲一個開始格式化會有所幫助。除此之外,它可能是這個'產品[d + 1]'。循環被定義爲用於'(INT d = 0; d Thomas

+0

感謝您的幫助。你會如何解決這個問題? –

回答

3

發生了什麼事發生在這裏:

for(int d=0;d<product.length;d++) 
{ 
    product[d+1]=product[d+1]+(product[d]/10); 
    product[d]=product[d]%10; 
} 

d == product.length - 1?具體這裏product[d+1]

的索引超出範圍誤差的,因爲這裏d + 1超出的產品陣列允許的索引。

+0

非常感謝。你知道我怎麼會去打印階乘沒有所有前導零? –

相關問題