计算随机数组的总和和平均值



我正在尝试创建3种方法,计算随机数组的和和和平均值,然后输出结果。

我正在尝试获得类似于-java随机数组59 7 2 1 4合计:23平均值:4.6

但我得到了"用法:java RandomArray。示例:java Random Array 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();
}

}

让我们先来看看您的求和方法:

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

您的方法"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
}
}

最新更新