2017-03-22 1 views
0

ich ein Objekt der Klasse Element haben:Kompilierungsfehler für Argumente in Objektinitialisierung

public class Element { 

    public int key; 
    public Object data; 

    public Element(int i, Object o){ 
     this.key = i; 
     this.data = o; 
    } 
} 

Wenn ich:

public Element extractMin(){ 
    Element max = new Element(i, o); 
    return max; 

ich Fehler:

PQHeap.java:46: error: cannot find symbol 
     Element max = new Element(i, o); 
          ^
    symbol: variable i 
    location: class PQHeap 
PQHeap.java:46: error: cannot find symbol 
     Element max = new Element(i, o); 
           ^
    symbol: variable o 
    location: class PQHeap 
2 errors 

Wenn ich definieren beide Typen zu den Argumenten "int" und "Object" während der Initialisierung "max":

public Element extractMin(){ 
    Element max = new Element(int i, Object o); 
    return max; 

ich Fehler:

PQHeap.java:46: error: '.class' expected 
    Element max = new Element(int i, Object o); 
           ^
PQHeap.java:46: error: ';' expected 
    Element max = new Element(int i, Object o); 
              ^
PQHeap.java:46: error: not a statement 
    Element max = new Element(int i, Object o); 
              ^
PQHeap.java:46: error: ';' expected 
    Element max = new Element(int i, Object o); 

Was die Fehler verursacht und wie definiere ich Argumente korrekt innerhalb der Initialisierung?

Danke

+2

Entfernen Sie 'int' und' 'Object' 'aus dem Methodenaufruf und deklarieren Sie sie als Variablen (oder Parameter oder Felder). –

+0

Sie müssen "i" und "o" definieren und initialisieren, bevor Sie sie als Argumente verwenden. 'new Element (i, o)' bedeutet nichts, wenn 'i' und' o' nicht existieren. Außerdem müssen sie nicht "i" und "o" genannt werden, nur weil sie in der Parameterdefinition so genannt werden. – Gendarme

+0

Was Andy gesagt hat, plus, wo erwartest du, dass 'i' und' o' herkommen? diese Variablen sind nicht in deinem Umfang ... Und bitte bitte bitte * nicht * benenne Variablen 'i' und' o' ... – alfasin

Antwort

0

Haben Sie zuerst i und o zugewiesen?

int i = 7; 
Object o = {[object here]}; 
public Element extractMin() 
{ 
    Element max = new Element(i, o); 
    return max; 
} 
+0

Werte sind die initialisierten i und o durch eine Eingabemethode in einer anderen Klasse – user7378542

+0

definiert, die Klasse erhält Eingabewerte i und o und ruft PQHeap.extractMin() um das Objekt "max" des Typs/class Element zu initialisieren. Könnte das ein Problem verursachen? – user7378542

+0

Sie haben Recht Tracy: Ich habe keine Werte für "Max" -Objekt definiert. Die Eingabewerte gingen zu einem anderen Objekt derselben Klasse Element, aber "max" wurde beim Aufruf nicht zugewiesen. Vielen Dank – user7378542