2014-12-12 2 views
0

Цель: Создать класс AverageDriver. Этот класс содержит только основной метод. Основной метод должен объявлять и создавать экземпляр объекта Average. Затем информация об объекте должна быть распечатана на консоль.Ошибка: конструктор AverageFINAL в классе AverageFINAL не может применяться к заданным типам;

У меня возникли проблемы с созданием части объекта последнего кода. Я пробовал следовать вместе с моим учебником, но я все еще получаю сообщение об ошибке.

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 

ответ

0

Вам нужен конструктор с параметром, как вы используете его в:

AverageFINAL object = new AverageFINAL(data); 

Try это:

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

Извините, что вы подразумеваете под «this.data = data;» ? – Meg

+0

'this.data' - это данные атрибута,' data' - это параметр конструктора. Я редактирую и переименовываю для ясности. –

+0

Теперь, когда я это сделал, для программы MiddleDriver, мне говорят, что мне нужен тип возврата. – Meg

1

У вас нет конструктора, определенного в AverageFINAL. В этом случае Java создает конструктор по умолчанию, no-arg.

Это как если бы это было определено:

public AverageFINAL() {} 

Однако, вы пытаетесь передать int[] в этой строке:

AverageFINAL object = new AverageFINAL(data); 

Если вы хотите передать int[], то вы должны явно создайте конструктор, который принимает в качестве параметра int[], и предположительно вы хотите присвоить этому int[] вашей переменной экземпляра data.

Смежные вопросы