2013-09-06 2 views
3

У меня проблема. Я изучаю java, и этот пример кода не работает, говоря:Массив как параметр конструктора

$javac Quicksort.java 2>&1 
    Quicksort.java:16: error: constructor Quicksort in class Quicksort cannot be applied to given types; 
    Quicksort qc = new Quicksort(values); 
    ^
    required: no arguments 
    found: int[] 
    reason: actual and formal argument lists differ in length 
    1 error 

Невозможно разобраться, почему. Может ли кто-нибудь помочь?

Мой фрагмент кода:

public class Quicksort{ 
    public int[] number ; 

    public void Quicksort(int[] values){ 
     this.number=values; 
    } 
    public void print(){ 
     for (int i=0; i<number.length;i++) 
      System.out.println(number[i]); 



    } 
    public static void main(String[] args){ 
     int[] values = {3,4,5,6,7,8}; 
     Quicksort qc = new Quicksort(values); 
     qc.print(); 
    } 

} 
+4

Это не то, как вы определяете конструктор в Java - вы определили простой метод, а не конструктор. В результате ваш код просто принимает аргумент no-argument по умолчанию. – lejlot

+0

тип возвращаемого конструктора не должен указываться, компилятор знает, каков тип возвращаемого значения конструктора и его не пустое, а объект класса, который он создает. – cerkiewny

ответ

11

Неверное определение Constructor.

public void Quicksort(int[] values){ 
     this.number=values; 
    } 

Должно быть

public Quicksort(int[] values){ 
     this.number=values; 
    } 

конструктор не будет иметь тип возвращаемого значения.

Providing Constructors for Your Classes

Класс содержит конструкторы, которые вызываются для создания объектов из класса копирку. Объявления конструктора выглядят как декларации методов, за исключением того, что они используют имя класса и не имеют типа возврата.

Например, Bicycle имеет один конструктор:

public Bicycle(int startCadence, int startSpeed, int startGear) { 
    gear = startGear; 
    cadence = startCadence; 
    speed = startSpeed; 
} 
4
public void Quicksort(int[] values){ 
     this.number=values; 
} 

должен быть

public Quicksort(int[] values){ 
     this.number=values; 
} 

Ваш конструктор не должен иметь тип возвращаемого значения (в вашем случае void). В противном случае это будет рассматриваться как метод

+0

Попробуйте использовать IDE, например eclipse для «обучения» Java. Большинство IDE либо выдают предупреждение, как «Предупреждение: метод, определенный с помощью имени/подписи конструктора» или даже могут помечать это как ошибку. (Может быть настроено в «настройках компилятора») –

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