我尝试查找我的错误问题,但我无法弄清楚我的代码出错了。
目标:
此类允许用户在数组中输入5个分数。然后它将按降序重新排列数据并计算数据集的平均值。
属性:
•data [] - 包含分数的数组
•mean-得分的算术平均值
方法:
•Average-构造函数。它将为阵列分配内存。使用for循环重复显示用户的提示,该提示应指示用户应输入分数1,分数2等。注意:计算机从0开始计数,但人们从1开始计数,并且您的提示应该是帐户为了这。例如,当用户输入得分数1时,它将存储在索引变量0中。然后构造函数将调用selectionSort和calculateMean方法。
•calculateMean - 这是一个使用for循环访问数组中每个分数并将其添加到运行总计的方法。总数除以得分数(使用数组的长度),结果存储为均值。
•toString-返回一个字符串,其中包含降序和均值的数据。
•selectionSort-his方法使用选择排序算法从最高到最低重新排列数据集。
import java.util.Scanner;
public class Average
{
private int [] data;
private double mean;
public Average()
{
data = new int[5];
Scanner keyboard = new Scanner (System.in);
for (int index = 0; index < data.length; index++)
{
System.out.println("Enter score #" + (index + 1) + ": ");
data[index] = keyboard.nextInt;
}
keyboard.close();
return data;
}
/**
* calculateMean Method
*/
public static float calculateMean(int[] data)
{
int total = 0;
for (int index = 0; index < data.length; index++)
{
total += data[index];
}
float mean = ((float)total) / data.length;
return mean;
}
/**
* selectionSort Method
*/
public static void selectionSort(int[] data)
{
int startScan, index, minIndex, minValue;
for (startScan = 0; startScan < (data.length-1); startScan++)
{
minIndex = startScan;
minValue = data[startScan];
for(index = startScan + 1; index < array.length; index++)
{
if (data[index] < minValue)
{
minValue = data[index];
minIndex = index;
}
}
data[minIndex] = data [startScan];
data [startScan] = minValue;
}
}
/**
* toString method
*/
public static void main(String[] args)
{
int[] data = new int[5];
Scanner keyboard = new Scanner(System.in);
for (int index = 0; index < data.length; index++)
{
System.out.println("Enter score #" + (index + 1) + ": ");
data[index] = keyboard.nextInt();
}
selectionSort(data);
float average = calculateMean(data);
System.out.println(Arrays.toString(data));
System.out.println("Average is " + average);
}
}
对不起大家,我应该发布错误的内容和位置。这是我编译时得到的:
编译完成。未编译以下文件:
发现4个错误: 文件:C:\ Users \ bryan \ Downloads \ Average.java [line:16] 错误:找不到符号 符号:变量nextInt location:java.util.Scanner类型的可变键盘 文件:C:\ Users \ bryan \ Downloads \ Average.java [line:19] 错误:不兼容的类型:意外的返回值 文件:C:\ Users \ bryan \ Downloads \ Average.java [line:50] 错误:找不到符号 符号:变量数组 location:class Average 文件:C:\ Users \ bryan \ Downloads \ Average.java [line:78] 错误:找不到符号 符号:变量数组 location:class Average答案 0 :(得分:1)
你的方法是静态的,并且有不幸的额外分号,并且不加选择地混合方法参数和类变量。您无法从void
方法返回值。当我修复语法错误(并将数组移动到您的main()
方法)时,它似乎工作。所以,我认为你想要像
class Average {
/**
* calculateMean Method
*/
public static float calculateMean(int[] data) {
int total = 0;
for (int index = 0; index < data.length; index++) {
total += data[index];
}
float mean = ((float) total) / data.length;
return mean;
}
/**
* selectionSort Method
*/
public static void selectionSort(int[] data) {
int startScan, index, minIndex, minValue;
for (startScan = 0; startScan < (data.length - 1); startScan++) {
minIndex = startScan;
minValue = data[startScan];
for (index = startScan + 1; index < data.length; index++) {
if (data[index] < minValue) {
minValue = data[index];
minIndex = index;
}
}
data[minIndex] = data[startScan];
data[startScan] = minValue;
}
}
public static void main(String[] args) {
int[] data = new int[5];
Scanner keyboard = new Scanner(System.in);
for (int index = 0; index < data.length; index++) {
System.out.println("Enter score #" + (index + 1) + ": ");
data[index] = keyboard.nextInt();
}
selectionSort(data);
float average = calculateMean(data);
System.out.println(Arrays.toString(data));
System.out.println("Average is " + average);
}
}