2013-08-10 24 views
5

In Java, Perché mi appare questo errore:Java Errore: Il costruttore non è definito

Error: The constructor WeightIn() is undefined 

del codice 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); 
    } 
} 

Ho un costruttore definito.

+6

Il compilatore è giusto. Il costruttore 'WeightIn()' è ** non ** definito. –

+0

puoi correggere il codice e poi averne passato una copia così posso capirlo per favore – user2669883

+0

Scrit ancora non funziona – user2669883

risposta

14

aggiungi questo alla tua classe.

public WeightIn(){ }

  • Vi preghiamo di comprendere che il default costruttore senza argomenti viene fornita solo se nessun altro costruttore è scritto
  • Se si scrive ogni costruttore, quindi compilatore non fornito di default costruttore no-arg. Devi specificarne uno.
+2

cosa intendi – user2669883

1

Non si dispone del costruttore WeightIn() .Crealo o fornire parametri nel metodo principale alla funzione di costruzione.

1
WeightIn weight1 = new WeightIn(); 

Il costruttore predefinito non è definito. Si prega di definire in questo modo: -

public weightIn() 
    { 
    } 
4

In questo non si può fare WeightIn weight1 = new WeightIn(); dal costruttore di default non è definito.

modo da poter aggiungere

public WeightIn(){ 
} 

Oppure si può fare questo

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

0

Il compilatore è che si verifichi una chiamata a un no costruttore "WeightIn()" argomento, su questa linea:

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

Il compilatore sta cercando un co corrispondente nstructor nella definizione della classe, e non lo trova. Questo è l'errore. (Si dispone di un costruttore definito: "WeightIn(double,double)" ma che accetta due argomenti e non corrisponde.)

Diversi modi per risolvere questo problema.

Il modo più semplice è modificare il codice nel metodo principale per passare due argomenti.

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

Le chiamate ai metodi setWeight e setHeight sono ridondanti, poiché i membri sono già assegnati valori dal metodo di costruzione.

0

Prima di tutto, è necessario sapere che un file .java può avere solo una classe pubblica.

Si riceve un errore perché è stato scritto il costruttore parametrizzato e si accede a un costruttore predefinito.Per correggere questo errore di scrittura:

WeightIn weight1 = new WeightIn(5.2, 52.2); 

invece di

WeightIn weight1 = new WeightIn(); 
Problemi correlati