java—计算随机数组的和和和平均值

ki1q1bka  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(385)

我正在尝试创建3种方法来计算随机数组的和和和平均值,然后输出结果。
我试图得到一个类似-javarandomArray 5 9 7 2 1 4 sum:23 mean:4.6的输出
但是我得到了“用法:java随机数组”。示例:java randomarray 5“
如果你能在我的代码中发现错误并帮助获得这个输出。

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();
}

}

9rbhqvlz

9rbhqvlz1#

方法“printarray(int sum)”有错误。当调用该方法时,将获取一个不需要的参数和。然后尝试创建第二个名为sum的局部变量。这是不可能的,因为您已经有一个名为sum的参数。
在for循环中初始化另一个名为sum的局部变量。你需要一个不同的变量名,因为你只需要它来计算循环。
因此,删除参数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
    }
}
bqucvtff

bqucvtff2#

我们先来看看你的求和法:

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 将是整数除法,结果将四舍五入到最接近的整数。

相关问题