怎么了它不是按降序打印测试成绩,也没有获得均值。显示0.0
她是我得到的指示:
此类将允许用户在数组中输入5个分数。然后它将按降序重新排列数据并计算数据集的平均值。
属性:
•data []-包含得分的数组
•平均值-分数的算术平均值
方法:
•平均-构造函数。它将为数组分配内存。使用for循环为用户重复显示提示,该提示应指示用户应输入分数1,分数2等。注意:计算机从0开始计数,但是人们从1开始计数,因此您的提示符应为为了这。例如,当用户输入分数1时,它将被存储在索引变量0中。然后,构造函数将调用selectionSort和calculateMean方法。
•computeMean-这是一种使用for循环访问数组中每个得分并将其添加到运行总计中的方法。总数除以分数数(使用数组的长度),结果存储为平均值。
•toString-返回一个字符串,其中包含降序排列的数据和均值。
•selectionSort-他的方法使用选择排序算法将数据集从最高到最低重新排列。
import java.util.Scanner;
public class Average
{
private int[] data;
private double mean;
private int total = 0;
public Average()
{
data = new int[5];
Scanner keyboard = new Scanner(System.in);
for(int i = 0; i < data.length; i++)
{
System.out.print("Enter score number " + (i + 1) + ": ");
data[i] = keyboard.nextInt();
}
}
public void calculateMean()
{
int i, s = 0;
for(i = 0; i < data.length; i++)
{
s = s + data[i];
}
mean = (double)s / (data.length);
}
public void selectionSort()
{
int maxIndex;
int maxValue;
for(int startScan = 0; startScan < data.length - 1; startScan++)
{
maxIndex = startScan;
maxValue = data[startScan];
for(int index = startScan + 1; index < data.length; index++)
{
if(data[index] > maxValue)
{
maxValue = data[index];
maxIndex = index;
}
}
data[maxIndex] = data[startScan];
data[startScan] = maxValue;
}
}
public String toString()
{
String output;
output = "The test scores in descending order are \n";
for(int i = 0; i < data.length; i++)
{
output = output + data[i] + " ";
}
output = output + "\nThe average is " + mean;
return output;
}
}
最佳答案
您需要返回并使用方法值的方法。这是您程序的一个小样机,以显示我的意思:
public static void main(String... args)
{
System.out.println(calculateMean(getData()));
}
public static int[] getData()
{
data = new int[5];
Scanner s = new Scanner(System.in);
for (int i = 0; i < data.length; i++)
{
System.out.print("Enter score number " + (i++) + ": ");
data[i] = Integer.parseInt(s.nextLine());
}
s.close();
return data;
}
public static double calculateMean(int[] data)
{
int s = 0;
for (int i = 0; i < data.length; i++)
{
s += data[i];
}
return mean = (double) s / (data.length);
}
getData()
方法从用户那里获得我们需要的所有信息,然后我们获取这些数据,并将其直接传递给calculateMean()
方法。反过来,这为我们吐出了所有分数的平均值。然后,我们要做的就是打印出来。我会把剩下的交给你,因为这看起来像是作业。试运行:
输入:
4, 67, 3, 7, 3
(逗号表示换行)输出:
16.8