Я делаю программу, которая содержит метод numdiv, который находит количество делителей d. У меня также есть метод под названием sumSquares, который находит квадраты от 1 до n. Я поместил цикл for в основной метод, чтобы найти сумму квадратов и делителей от 10 до 50, только теперь я хочу найти среднее количество делителей ч / б 10 и 50. Вот код:


    public static void main(String[] args) {
        System.out.println("NUMBER\tSUM OF SQUARES\tDIVISORS");//setup table
        //loop through numbers 10 to 50
        for(int i = 10; i <= 50; i++){ //i represents the integers to print
            System.out.println(i + "\t" + sumSquares(i) + "\t\t" + numdiv(i));
        }
    }

    public static int sumSquares(int n){
        int sum = 0; //define sum
        for(int num = 1; num <= n; num++){
            sum = (num*num) + sum; //set sum equal to num*num then add to sum
        }
        return sum;
    }

    public static int numdiv(int d){
        int div = 0; //counter for divisors

        for(int num = 1; num <= d; num++){
            if(d % num == 0){ //check if d is a divisor
                div++; //increment div each time true
            }
        }
        return div;
    }
}

У кого-нибудь есть идея, как я могу это сделать, пожалуйста?

0
Anonymous 17 Окт 2019 в 00:45

1 ответ

Лучший ответ

В зависимости от ваших методов, не меняя их для сохранения логики, вы можете изменить свой метод main следующим образом:

public static void main(String[] args) {
    System.out.println("NUMBER\tSUM OF SQUARES\tDIVISORS");//setup table
    //loop through numbers 10 to 50
    int sumSquares = 0;
    int numDiv = 0;
    int totalSquares = 0;
    int totalDiv = 0;
    for(int i = 10; i <= 50; i++){ //i represents the integers to print
        sumSquares = sumSquares(i);
        numDiv = numdiv(i);
        System.out.println(i + "\t" + sumSquares + "\t\t" + numDiv);
        totalSquares += sumSquares;
        totalDiv += numDiv;
    }
    System.out.printf("Average sumSquares: %d - Average numDiv: %d", totalSquares/41, totalDiv/41);
}

Примечание . Я жестко запрограммировал делитель 41, потому что у вас также есть жестко закодированные числа от 10 до 50. Вы должны экстернализовать это, а также числа петель for.

0
Villat 16 Окт 2019 в 22:21