Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中查找数字的因子并保存到数组中_Java_Arrays - Fatal编程技术网

在Java中查找数字的因子并保存到数组中

在Java中查找数字的因子并保存到数组中,java,arrays,Java,Arrays,我正在写一个寻找完美数字的程序。这样做的第一步是找到一个数的所有因子。我需要一些代码来找到一个数字的因子,并将因子保存到一个数组中(而不是打印数字)。这是我到目前为止得到的结果,但它返回一个NullPointerException: public static int[] getFactors(int number) { int factorNumber = 1; int varArrayStoreID = 0; int[] factors = null; wh

我正在写一个寻找完美数字的程序。这样做的第一步是找到一个数的所有因子。我需要一些代码来找到一个数字的因子,并将因子保存到一个数组中(而不是打印数字)。这是我到目前为止得到的结果,但它返回一个NullPointerException:

public static int[] getFactors(int number) {
    int factorNumber = 1;
    int varArrayStoreID = 0;
    int[] factors = null;

    while(factorNumber <= number){
        if(number % factorNumber == 0){
            varArrayStoreID = varArrayStoreID + 1;
            factors[varArrayStoreID] = factorNumber;
        }
        factorNumber++;
    }

    return factors;
}
publicstaticint[]getFactors(整数){
int factorNumber=1;
int varArrayStoreID=0;
int[]因子=null;

虽然(factorNumber问题是,您必须先初始化
数组,然后才能尝试添加任何内容。这在您的情况下并不起作用,因为在执行循环之前,您不知道一个数字将包含多少因素,但我们需要知道初始化数组时有多少因素。我建议从
数组
到一个
列表
,这样您的收藏可以是动态的。如下所示:

int factorNumber = 1;
List<Integer> factors = new ArrayList<>();
while(factorNumber <= number){
    if(number % factorNumber == 0){
        factors.add(factorNumber);
    }
    factorNumber++;
}
或者,如果您不喜欢我的更改,并且根本不想使用
List
,您可以这样做来解决您的问题:

int factorNumber = 1;
int varArrayStoreID = 0;
int[] factors = new int[number];
while(factorNumber <= number){
    if(number % factorNumber == 0){
        varArrayStoreID = varArrayStoreID + 1;
        factors[varArrayStoreID] = factorNumber;
    }
    factorNumber++;
}
return Arrays.copyOfRange(factors, 0, varArrayStoreID);
int factorNumber=1;
int varArrayStoreID=0;
int[]因子=新的int[number];

while(factorNumber)您需要将int[]factors=null;初始化为某个值而不是null…您的
int[]factors=null;
显式地创建了您的问题。您从何处获取此代码?
int factorNumber = 1;
int varArrayStoreID = 0;
int[] factors = new int[number];
while(factorNumber <= number){
    if(number % factorNumber == 0){
        varArrayStoreID = varArrayStoreID + 1;
        factors[varArrayStoreID] = factorNumber;
    }
    factorNumber++;
}
return Arrays.copyOfRange(factors, 0, varArrayStoreID);