0

См., У меня есть логический метод, который получает делители, которые работают, изменяя число на делитель, который проверяется и определяется истинным с помощью цикла for (а не первого, который просто выполняет цикл программы для определенного количество ввода. Я не уверен, есть ли способ взять несколько результатов цикла и добавить их вместе, но это то, что мне нужно сделать. прямо сейчас Я показываю результаты цикла, но это было для отладки, в конце выход будет состоять в том, будет ли он обильным (добавленные делители превышают число), совершенным (добавленные делители равны числу) или недостатком (добавленные делители меньше числа) Это код в затмении:Расчет совершенных чисел

import java.util.*; 
public class PerfectNumber { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     for(int i = 0; i < 15; i++) 
     { 
      Scanner reader = new Scanner(System.in); 
      int number = 0; 
      int divisor = 1; 
      int addnum = 0; 
      System.out.println("Please input a number to check if it is perfect, abundant, or deficient"); 
      number = reader.nextInt(); 

      for(divisor = 1; divisor < number; divisor++) 
      { 
       isDivisor(number, divisor); 
       if(isDivisor(number, divisor) == true) 
       { 
        System.out.println(divisor); 
       } 
      } 
     } 
    } 

    static boolean isDivisor(int number, int divisor) 
    { 
     if (number % divisor == 0) 
      return true; 
     else 
      return false; 
    } 

} 
+0

Чтобы уточнить, вы имеете в виду, что если 'isDivisor' возвращает true, вы хотите, чтобы этот делитель (а не число) был добавлен ко всем другим истинным номерам' isDivisor'? – hichris123

ответ

0

Если вы хотите, чтобы суммировать вещи в цикле, вы можете использовать некоторые заявления, как это:

Int sum; 
// your for loop start 
    If (isDivisor(number, divisor)) 
     sum += divisor; 
    // end of loop 
    //here you can do the comparison. 

Там нет необходимости сравнивать с истинным в вашем Условный оператор. Также этот код вводится только в том случае, если в теле if есть только один оператор. Если вам нужно сделать несколько вещей, вам нужно обернуть все это в скобки.

Также ваш первый вызов isDivisor бесполезен, так как вы ничего не делаете со значением, которое вы получаете.

1

Для того, чтобы ответить на то, что, кажется, ваш непосредственный вопрос для того, что пахнет как проблема домашних заданий;)

Я не уверен, есть ли какой-нибудь способ, чтобы взять несколько результатов цикла и добавить их вместе

вы можете проверить возвращение вашей функции , как вы уже делаете и увеличиваем счетчик

public boolean isSeven(int x){ 
    return x == 7; 
} 

public static void main(String[] args){ 
    int sumOfSevens= 0; 
    int i = 0; 
    while(i < 10){ 
     if(isSeven(7)){ 
      sumOfSevens = sumOfSevens + 7; // or += 
      ++i; 
     } 
    } 
    // At this point sumOfSevens = 70; 
} 
1

Вам не нужно isDivisor, потому что оно равно следующему выражению:

number % divisor == 0 

Просто суммировать делители:

int numDivSum = 0;  

for(divisor = 1; divisor < Math.sqrt(number); divisor++) 
{ 

    if(number % divisor == 0) 
    { 
     numDivSum += divisor; 
    } 
} 

и проверка является numDivSum совершенен, обильные или несовершенна.

Смежные вопросы