2016-04-07 4 views
-1

ich ein Array mit Typ-Objekt haben. Dann weise ich seine Werte null zu. Aber später möchte ich int Werte auf Nullzellen zuweisen. Ist das möglich? In diesen Zeilen:Java: Array Elemente null und int-Werte

Queue[y]=new Int; 
    Queue[y]=num; 

Ich versuche, ein Objekt Int-Typen, in der Null-Zelle erstellen. Aber ich bekomme diese Fehlermeldung:

error: '(' or '[' expected 
      Queue[y]=new Int; 

private Object Queue[]; 
public PriorityQueue(int capacity){ 
    this.capacity=capacity; 
    Queue= new Object [capacity]; 
    for(int i=0;i<=Queue.length;i++) { 
      Queue[i]=null; 
    } 
} 

public boolean insert(int num){ 
    if (y<capacity){ 
      Queue[y]=new Int; 
      Queue[y]=num; 
      y++; 
      return true; 
    } 
    else{ 
      y++; 
      return false; 
    } 
} 
+0

Sie benötigen immer eine Liste Parameter, wenn Sie einen Konstruktor aufrufen, auch wenn es leer ist: 'neue Int()'. Oder, wenn Sie ein Array erstellen möchten, müssen Sie die Anzahl der Elemente angeben: 'new Int [10]'. –

+1

Es ist 'Integer', nicht' Int' und es benötigt einen Wert für den Konstruktor, also 'new Integer (5)'. Aber Sie brauchen diese Zeile überhaupt nicht, da Sie dieser Stelle im Array in der nächsten Zeile 'num' zuweisen. – GriffeyDog

+0

@GriffeyDog Woher weißt du, dass es keine benutzerdefinierte Klasse namens "Int" ist? Es ist ein gültiger Klassenname. –

Antwort

0

(ich weiß nicht, welche Klasse Sie von Int bedeuten - vielleicht meinen Sie java.lang.Integer, aber vielleicht meinen Sie einige benutzerdefinierte Klasse Es ist nicht völlig relevant. auf die Antwort, jedoch)

Sie immer eine Parameterliste benötigen, wenn Sie einen Konstruktor aufrufen, auch wenn es leer ist:

new Int() 

Oder, wenn Sie ein Array erstellen bedeuten, müssen Sie die Anzahl der Elemente bestimmen:

new Int[10] 

Allerdings brauchen Sie nicht die erste Aufgabe:

Queue[y]=new Int(); 
Queue[y]=num; 

Die zweite Zeile überschreibt den Wert in der ersten Zeile, also erstellt sie gerade ein Objekt und verwirft es sofort.

Sie könnten einfach schreiben:

Queue[y]=num; 

Beachten Sie, dass dies ein int zu einem Object Array-Element nicht tatsächlich zuweisen: aufgrund Autoboxing, der Compiler automatisch konvertiert diese an:

Queue[y]=Integer.valueOf(num); 

so eine Instanz von Integer wird zum Array hinzugefügt. Diese Konvertierung ist jedoch nicht etwas, das Sie selbst tun müssen.