2013-08-10 12 views
5

w Javie, Dlaczego otrzymuję ten błąd:Java Error: Konstruktor jest niezdefiniowana

Error: The constructor WeightIn() is undefined 

kod Java:

public class WeightIn{ 
    private double weight; 
    private double height; 

    public WeightIn (double weightIn, double heightIn){ 
    weight = weightIn; 
    height = heightIn; 
    } 
    public void setWeight(double weightIn){ 
    weight = weightIn; 
    } 
    public void setHeight(double heightIn){ 
    height = heightIn; 
    } 
} 

public class WeightInApp{ 
    public static void main (String [] args){ 
    WeightIn weight1 = new WeightIn();   //Error happens here. 
    weight1.setWeight(3.65); 
    weight2.setHeight(1.7); 
    } 
} 

Mam konstruktora zdefiniowany.

+6

Kompilator ma rację. Konstruktor 'WeightIn()' jest ** nie ** zdefiniowany. –

+0

czy możesz poprawić kod, a następnie skopiować go, aby go zrozumieć? – user2669883

+0

Scrit nadal nie działa – user2669883

Odpowiedz

14

dodaj to do swojej klasy.

public WeightIn(){ }

  • Proszę zrozumieć, że nie ma domyślnego konstruktora-argumentem jest tylko wtedy, gdy żaden inny konstruktor jest napisane
  • Jeśli piszesz żadnego konstruktora, następnie kompilator nie umieszczono domyślny konstruktor no-arg. Musisz podać jeden.
+2

co masz na myśli – user2669883

1

Nie masz konstruktora WeightIn() .Utwórz go lub podaj parametry w głównej metodzie do konstruktora.

1
WeightIn weight1 = new WeightIn(); 

Domyślny konstruktor nie jest zdefiniowany. Proszę określić ją tak: -

public weightIn() 
    { 
    } 
4

W tym nie można zrobić WeightIn weight1 = new WeightIn(); ponieważ domyślny konstruktor nie jest zdefiniowana.

Więc można dodać

public WeightIn(){ 
} 

Albo można to zrobić

WeightIn weight1 = new WeightIn(3.65,1.7) // constructor accept two double values

0

Kompilator napotyka połączenia do żadnego konstruktora argument "WeightIn()", na tej linii:

WeightIn weight1 = new WeightIn();   //Error happens here. 

Kompilator szuka pasującego elementu nstructor w definicji klasy i jej nie znajduje. To jest błąd. (Masz zdefiniowany konstruktor: "WeightIn(double,double)", ale wymaga to dwóch argumentów i nie jest zgodny.)

Kilka sposobów, aby to naprawić.

Najłatwiej jest zmienić kod w głównej metodzie, aby przekazać dwa argumenty.

WeightIn weight1 = new WeightIn(3.65, 1.7); 
//weight1.setWeight(3.65); 
//weight2.setHeight(1.7); 

Połączenia do metod setWeight i setHeight są zbędne, gdyż członkowie są już przypisane wartości metodą konstruktora.

0

Po pierwsze, powinieneś wiedzieć, że jeden plik .java może mieć tylko jedną klasę publiczną.

Otrzymujesz błąd, ponieważ zapisałeś sparametryzowany konstruktor i uzyskałeś dostęp do domyślnego konstruktora.Aby naprawić ten błąd zapisu:

WeightIn weight1 = new WeightIn(5.2, 52.2); 

zamiast

WeightIn weight1 = new WeightIn(); 
Powiązane problemy