平均类不编译

时间:2014-12-09 20:31:50

标签: java arrays

我尝试查找我的错误问题,但我无法弄清楚我的代码出错了。

目标:

此类允许用户在数组中输入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

1 个答案:

答案 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);
    }
}