有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java错误:AverageFINAL类中的构造函数AverageFINAL无法应用于给定类型;

目标: 创建一个AverageDriver类。此类仅包含main方法。 main方法应该声明并实例化一个平均对象。平均数 然后应将对象信息打印到控制台

我在创建最后一段代码的对象部分时遇到了问题。我试着跟随我的课本,但仍然收到一条错误信息

import java.util.Scanner;

/**
 * The Average class calculates the average of the test 
 * scores entered and puts the scores into descending order.
 */

public class AverageFINAL
{
  private int[] data;


 public int calculateMean()
 {
   int total = 0;
   int mean;

    for (int index = 0; index < data.length; index++)
      total += data[index];
   mean = total / data.length;
   return mean;
 }

 public int selectionSort()
 {
   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;
    }
  return data[startScan];
 }
}

import java.util.Scanner;

public class AverageDriver
{
  public static int main(String[] args)
  {
   int[] data = new int[5];

   AverageFINAL object = new AverageFINAL(data);

   getValues(data);

   System.out.println("The test scores you entered, in descending order, are:");
   System.out.println(object.selectionSort());
   System.out.println("The average is" + object.calculateMean() +".");

  }

  private static int getValues(int[] data)
  {
  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();
  }
}

我收到的错误消息是:

1 error found:
File: C:\Users\bryan\Downloads\AverageDriver.java  [line: 9]
Error: constructor AverageFINAL in class AverageFINAL cannot be applied to given types;
  required: no arguments
  found: int[]
  reason: actual and formal argument lists differ in length

共 (2) 个答案

  1. # 1 楼答案

    AverageFINAL中没有定义任何构造函数。在这种情况下,Java会创建一个默认的无参数构造函数

    这就好像是被定义的:

    public AverageFINAL() {}
    

    但是,您试图在此行中传递int[]

    AverageFINAL object = new AverageFINAL(data);
    

    如果要传递int[],则必须显式创建一个构造函数,该构造函数将int[]作为其参数,并且可能希望将该int[]分配给实例变量data

  2. # 2 楼答案

    在以下情况下使用时,需要一个带参数的构造函数:

    AverageFINAL object = new AverageFINAL(data);
    

    试试这个:

    public class AverageFINAL
    {
      private int[] data;
      public AverageFINAL(int[] dataParam) {
        data = dataParam;
      }
    etc.