我试图制作一个计算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]我得到数组索引超出范围我可以得到一些帮助吗?
答案 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是数组的长度。