gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:11:34 25 4
gpt4 key购买 nike

我正在编写一个程序来查找完美数字。这样做的第一步是找到一个数字的所有因子。我需要一些代码来查找数字的因子并将因子保存到数组中(不打印数字)。这是我到目前为止所拥有的,但它返回一个 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;
}

谢谢。

最佳答案

问题是你必须初始化你的 Array在您可以尝试向其中添加任何内容之前。这在您的情况下实际上不起作用,因为在执行循环之前您不知道一个数字将有多少个因子,但我们需要知道初始化数组时有多少个因子。我建议从 Array 更改到 List所以你的 Collection 可以是动态的。像这样的事情:

int factorNumber = 1;
List<Integer> factors = new ArrayList<>();
while(factorNumber <= number){
if(number % factorNumber == 0){
factors.add(factorNumber);
}
factorNumber++;
}

最终的产品是 List<Integer 。如果你想返回Array ,您将必须循环并创建一个数组:

int[] output = new int[factors.size()];
for (int i=0; i<factors.size(); i++){
output[i] = factors.get(i);
}
return output;

或者,如果您不喜欢我的更改并且不想使用 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);

关于java - 在 Java 中查找数字的因数并保存到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33744408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com