gpt4 book ai didi

java - 为什么我的代码输出与我在 Java 中预期的不同?

转载 作者:行者123 更新时间:2023-12-01 10:58:31 25 4
gpt4 key购买 nike

我正在学习Java。以下程序应该检查一个数字并确定该数字有多少个因数(甚至是除数)。例如,

1 仅具有自身作为因子。5 有 3 个因数:1 和 5。9 有 3 个因数:1、3 和 9。

我向程序提供了一个列表中的这三个数字。我预计输出是

{1, 2, 3}

但是,我得到的是多次打印的原始数字:

{1, 5, 5, 9, 9, 9}

我做错了什么?

int totalFactor(int[] n){
int tally =0;
for (int i = 0; i < n.length; i++){
for(int j = 1; j <= n[i]; j++){
if((n[i] % j) == 0){
tally++;
}
}
}
return tally;
}

int[] factorsOfEach(int[] num){
int[] factor = new int[totalFactor(num)];
int count = 0;

for(int i = 0; i < num.length; i++){
for(int j = 1;j <= num[i]; j++){
if(num[i] % j == 0){
factor[count] = num[i];
count++;
}
}
}
return factor;
}

最佳答案

问题出在你的内部循环的中间。您实际上所做的是,每次找到一个因子时,都将原始数字附加到列表的末尾。

相反,您应该简单地保留该计数。当您找到所有因素后,只需将计数追加到列表末尾一次即可。

for(int i = 0; i < num.length; i++){  // for each number in input list
count = 0 // haven't found any factors yet for this number
for(int j = 1; j <= num[i]; j++){ // for each potential factor
if(num[i] % j == 0){
count++; // found one more factor
}
} // done with that potential factor
factor[i] = count;
} // done with that number in the input list
return factor;

关于java - 为什么我的代码输出与我在 Java 中预期的不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33469377/

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