这里有什么问题?它不是按降序打印考试成绩,我也没有得到平均值。显示 0.0
她是给我的指示:
此类将允许用户将 5 个分数输入到数组中。然后它将按降序重新排列数据并计算数据集的平均值。
属性:
• data[]——将包含分数的数组
• mean——分数的算术平均值
方法:
• 平均——构造函数。它将为数组分配内存。使用 for 循环重复向用户显示提示,提示用户应输入分数 1、分数 2 等。注意:计算机从 0 开始计数,但人从 1 开始计数,您的提示应该考虑为了这。例如,当用户输入分数 1 时,它将被存储在索引变量 0 中。然后构造函数将调用 selectionSort 和 calculateMean 方法。
• calculateMean — 这是一种使用 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;
}
}