Я изучаю Java. Следующая программа должна исследовать число и определить, сколько факторов (даже делителей) это число. Например,Почему мой код отличается от ожидаемого в 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;
}
В коде содержится столько ошибок компиляции. В 'factorOfEach()', 'final' является [зарезервированное ключевое слово Java] (https://en.wikipedia.org/wiki/Final_ (Java)), поэтому вы не можете использовать его как имя переменной. вы передали параметр 'int [] num' в качестве параметра, но вы используете' list'. – Keale
Если вы хотите, чтобы результат был 'int [] x = {1,5,9} factorOfEach (x) = {1,2,3}'. Вы можете использовать 'System.out.print (" int [] x = {1,5,9} \ n \ n факторыOfEach (x) = {1,2,3} ");' ... Я предполагаю вы хотите, чтобы он был более динамичным, поэтому вы, вероятно, захотите указать, что на самом деле должен делать код. – Knells
Отредактировано, было переименование номера. –