Java 如何修复脚本以正确的顺序运行?
程序应该会返回 考试分数按降序排列为:(分数)平均分为 (平均) 我收到的结果是 平均值为(平均值)。考试分数按降序排列为: (分数) 我怎样才能修好它以获得适当的回报Java 如何修复脚本以正确的顺序运行?,java,selection-sort,Java,Selection Sort,程序应该会返回 考试分数按降序排列为:(分数)平均分为 (平均) 我收到的结果是 平均值为(平均值)。考试分数按降序排列为: (分数) 我怎样才能修好它以获得适当的回报 import java.util.Scanner; public class Average { private int[] data; private double mean; public Average() { data = new int[5]; int
import java.util.Scanner;
public class Average
{
private int[] data;
private double mean;
public Average()
{
data = new int[5];
int number = 0;
int Temp = 0;
String[] Scores = new String[5];
Scanner keyboard = new Scanner(System.in);
for(int index = 0; index < data.length; index++)
{
number++;
System.out.print("Enter test score #" + number + ":");
Temp = keyboard.nextInt();
data[index] = Temp;
}
selectionSort();
calculateMean();
}
public void selectionSort()
{
int n = data.length;
for(int index = 0; index < n-1; index++)
{
int min_idx = index;
for(int j = index+1; j < n; j++)
if(data[j] >= data[min_idx])
min_idx = j;
int temp = data[min_idx];
data[min_idx] = data[index];
data[index] = temp;
}
}
public String toString()
{
String MyScore = "Your test scores in descending order are: " + "\n";
for(int index = 0; index < data.length; index++)
{
MyScore += data[index] + " ";
}
return MyScore;
}
public void calculateMean()
{
int Sum = 0;
int Mean = 0;
for(int index = 0; index < data.length; index++)
{
Sum += data[index];
}
Mean = Sum/data.length;
System.out.println("The average is " + mean);
}
}
无法打印正确平均值的错误在于此方法:
public void calculateMean() {
int Sum = 0;
int Mean = 0;
for (int index = 0; index < data.length; index++) {
Sum += data[index];
}
Mean = Sum / data.length;
System.out.println("The average is " + mean);
}
public void calculateMean(){
整数和=0;
int平均值=0;
for(int index=0;index
您正在打印出全局定义的
mean
,但从未初始化,因此它默认为0
。在这种方法中,您有一个变量Mean
(大写),它是实际值存储在其中的变量,这就是您要打印的变量。只有在调用toString()
之后,您才应该调用calculateMean()
。因此,您可以修改构造函数
selectionSort();
System.out.println(toString());
calculateMean();
或者只调用selectionSort()代码>在构造函数中,然后在main
public class AverageDriver
{
public static void main(String[] args)
{
Average myScores = new Average();
System.out.print(myScores);
myScores.calculateMean();
}
}
顺便说一下,变量应该使用小写名称,这将修复calculateMean()
中的错误:您正在调用System.out.println(“平均值是”+mean)代码>但变量是Mean
public static void main(String[] args)
{
Average MyScores = new Average();
System.out.print(MyScores);
}
创建Average
实例时,将调用构造函数。在构造函数中有一个对calculateMean()
的调用,该调用将打印
平均数是(平均数)
打印MyScores
时,将调用覆盖toString()
,它按降序打印测试分数为:(分数)
从构造函数中取出方法调用(它们首先不应该在那里),然后从main
public static void main(String[] args)
{
Average myScores = new Average();
System.out.print(myScores);
myScores.selectionSort();
myScores.calculateMean();
}
Postmain
(或者无论您在哪里使用Average
class)。我将它改为“意思”,它仍然给出了错误的执行顺序,如上所述。
public static void main(String[] args)
{
Average myScores = new Average();
System.out.print(myScores);
myScores.selectionSort();
myScores.calculateMean();
}