java for循环存储在数组中的factorial

时间:2017-04-23 13:11:33

标签: java arrays for-loop

我试图制作一个计算1到5阶乘的程序,并将这些值存储在数组大小为5

import java.util.*;
public class factorialArray
{
    public static void main(String [] args)
    {
        int factorialA[] = new int[5];
        for (int i=1; i<6; i++)
        {
            int factorial = 1;
            for(int j=1; j<=i; j++)
            {
                factorial = factorial *j;
            }
            factorial = factorialA[i];
        }
        System.out.println(factorialA[3]);
    }
}

如果正确理解数组,我想打印出第三个第四个索引,即factorialA [3]。但是我得到0.而且如果我有int factorialA [] = new int [5]我得到数组索引超出范围我可以得到一些帮助吗?

7 个答案:

答案 0 :(得分:0)

首先,从

改变循环的条件
for (int i=1; i<6; i++)

for (int i=1; i<5; i++) // you could also do i=0

然后,这一行

factorial = factorialA[i];

这不会对您的阵列进行任何更改。我想你打算做

factorialA[i] = factorial;

答案 1 :(得分:0)

小修正:

public static void main(String [] args) { 
    int factorialA[] = new int[5]; 
    for (int i=0; i<5; i++) { 
       int factorial = 1; 
       for(int j=1; j<=i+1; j++) { 
          factorial = factorial *j; 
       } 
      factorialA[i] = factorial; 
    } 
    System.out.println(factorialA[3]); 
}

这应该可以解决问题。

答案 2 :(得分:0)

此处的问题已在下面的代码中解决。赋值factorial = factorialA [i]没有帮助。您需要将factorial值存储在数组中,在这种情况下,factorialA [i] = factorial将完成,并且还存在索引问题,因为Java中的数组是基于0索引的。运行代码时,我得到了ArrayIndexOutOfBounds异常。这在以下代码中得到修复。希望这会有所帮助: - )

public static void main(String [] args)
{
    int factorialA[] = new int[5];
    for (int i = 0; i < 5; i++)
    {
        int factorial = 1;
        for(int j= 1; j <= i + 1; j++)
        {
            factorial = factorial * j;
        }
        factorialA[i] = factorial;
    }
    System.out.println(factorialA[3]);
}

答案 3 :(得分:0)

我猜你正在寻找这个

public class factorialArray {

    public static void main(String[] args) {
        int arr[] = {1,2,3,4,5};
        for(int i=1;i<5;i++) {
            arr[i] = factorial(i); 
        }

        for(int i=1;i<5;i++) {
            System.out.println(arr[i]); 
        }

    }

    public static int factorial(int number){  
          int i,fact=1;  

          for(i=1;i<=number;i++){    
              fact=fact*i;    
          }    
          return fact;   
         }  
}

答案 4 :(得分:0)

您需要进行一些生成errors的更改。我已在代码中提及过它们。

您要将factorial of any number存储在index的{​​{1}}处。因此,如果您需要存储array静态编号factorials,则需要访问N索引的array-elements所以您需要将数组大小设置为1-N。< / p>

你犯的另一个错误是N+1。因此,您根本不会操纵factorial = factorialA[i];的值,这会导致初始Array-Elements所有元素都为array。因此,您需要在此处将分配顺序更改为0

factorialA[i] = factorial

答案 5 :(得分:0)

  

我想打印出第三个第四个指数,即factorialA [3]如果即时通讯   正确理解数组。但我得到0

使用int创建int factorialA[] = new int[5]数组时,数组元素将使用0进行初始化,因为您不是将计算的因子值分配给数组,因此您需要更正它,如下所示:

factorialA[i] = factorial; //assign calculated value to the array element

此外,数组索引从0开始,因此将外部循环更改为:

for (int i=0; i<5; i++)

答案 6 :(得分:0)

首先,如果你想要阶乘到n然后初始化长度为n + 1的数组。假设你想要阶乘[5],然后有大小因子数组[6]。当数组索引从0开始上升到n-1,其中n是数组的长度。