Вычисление суммы и среднего случайного массива - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь создать 3 метода, которые вычисляют сумму и среднее значение случайного массива, а затем выводят результат.

Я пытаюсь получить вывод, похожий на - java RandomArray 5 9 7 2 1 4 Сумма: 23 Среднее значение: 4,6

но я получаю "Использование: java RandomArray. Пример: java RandomArray5 "

, если вы можете обнаружить ошибки в моем коде и помочь с тем, как получить этот вывод.

public class RandomArray {

private int[] numbers; //instance variable

/**
 *  Constructor
 *
 *@param  size  The size of the array
 */
public RandomArray(int size){
    numbers = new int[size];
    for(int i=0; i<numbers.length;i++){
        numbers[i] = (int)(Math.random()*10); // a random number between 0-9
    }
}

/**
 *  a method to print the array elements
 */

public void printArray() {
    for (int i = 0; i < numbers.length; i++)
        System.out.print(i + " ");
}       

/**
 *  A method to calculate the sum of all elements
 *
 *@return    The sum
 */
public int calSum(){
 int sum = 0;
 for (int value : numbers) {
     sum += value;
}
    return sum;

}

/**
 *  A method to calculate the mean of all elements
 *
 *@return    The mean
 */

public double calMean() {
    int sum = calSum();
    int length = numbers.length;

    return (double) sum / length;
}


/**
 *  a method to print the array elements in reverse order
 */
public void printReverse(){


}

/**
 *  A main method to test
 */
public static void main(String[] args) {
    // Check to see if the user has actually sent a paramter to the method
    if (args.length != 1){
        System.out.println("Usage: java RandomArray <NUM>. Example: java RandomArray 5");
        System.exit(-1);
    }

    // Create an instance of the class 
    RandomArray test = new RandomArray(Integer.parseInt(args[0]));


    // Print the array
    test.printArray();

    // Calculate the sum of all the values in the array and print it
    System.out.println("Sum: "+ test.calSum());

    // Calculate the mean of all the values in the array and print it
    System.out.println("Mean: "+ test.calMean());

    System.out.print("Reverse: ");
    test.printReverse();
}

}

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Давайте сначала посмотрим на ваш метод сумм:

public int calSum(int sum) {
    int sum = 0;
    for (int value : numbers) {
        sum += value;
    }
    return sum;
}
  • Почему этот метод принимает параметр?В любом случае вы просто повторно объявите его на следующей строке.
  • В противном случае выглядит хорошо.

Вот исправленная версия:

public int calSum() {
    int sum = 0;

    for (int value : numbers) {
        sum += value;
    }

    return sum;
}

Далее,среднее значение:

public double calMean(int[] array){

    //Unsure which elements go here
}
  • Опять же, почему параметр?
  • Вспомните, как мы вычисляем среднее значение: суммируем все элементы, затем делим на количество элементов.
  • У нас уже есть метод расчета суммы, поэтому мы можем его использовать.
public double calMean() {
    int sum = calSum();
    int length = numbers.length;

    return (double) sum / length;
}

Обратите внимание на использование (double) здесь.Без него cal / length будет целочисленным делением , а результат будет округлен до ближайшего целого числа.

0 голосов
/ 06 декабря 2018

Ваш метод "printArray (int sum)" содержит ошибку.Когда вы вызываете метод, вы берете параметр sum, который не нужен.Затем вы пытаетесь создать вторую локальную переменную с именем sum.Это невозможно, потому что у вас уже есть параметр sum.

В вашем цикле for вы запускаете другую локальную переменную sum.Вам нужно другое имя для этой переменной, поскольку оно нужно только для подсчета цикла.

Поэтому удалите сумму параметров и переименуйте переменную, используемую в цикле for.

Это должно работать:

import java.util.Arrays;

public class ArrayCalculations
{
    private int[] numbers;

    public ArrayCalculations(int size)
    {
        this.numbers = new int[size];

        for (int i = 0; i < size; i++)
        {
            int randomNumber = (int) (Math.random() * 10);
            numbers[i] = randomNumber;
        }
    }

    public int calculateSum()
    {
        int sum = 0;

        for (int i = 0; i < numbers.length; i++)
        {
            sum += numbers[i];
        }

        return sum;
    }

    public float calculateAverage()
    {
        float sum = (float) calculateSum();

        return sum / numbers.length;
    }

    public void printArray()
    {
        System.out.println(Arrays.toString(numbers));
    }

    public static void main(String[] args)
    {
        ArrayCalculations ac = new ArrayCalculations(5); // initiates an array with 5 elements
        ac.printArray(); // prints the array to console
        System.out.println("The sum is: " + ac.calculateSum()); // prints the sum
        System.out.println("The average is: " + ac.calculateAverage()); // prints the average
    }
}
...