2016-05-02 15 views
0

So schreibe ich ein Programm, wo ich möchte, dass alle Elemente in einem Vektor auf einen bestimmten Wert festgelegt und neue Vektorlänge angegeben. Dies ist mein Code so weit:Uniform Set-Methode funktioniert nicht

public static Vector uniform(int length, long value) { 

    Vector vector = new Vector(length); 

    for (int i = 0; i < length; i ++) { 
     vector.elements[i] = this.value; 
    } 
    return this.vector; 
} 

Wenn jedoch dieses Programm läuft, sind alle Zahlen in den Vektor werden auf den angegebenen Wert gesetzt aber es nicht um die Anzahl von ganzen Zahlen im Array selbst zu ändern. Wie kann ich meinen Code reparieren, um dies zu zeigen?

+0

'vector.elements [i]' sollte nicht einmal kompilieren, da es keine 'elements' Eigenschaft ist, nicht einmal ein geschützter/private ein. Ich denke, du meinst "vector.add (value)" stattdessen (beachte, dass 'new Vector (length)' einen Vektor mit einer initialen _capacity_ von 'length' erzeugt - er ist nach der Konstruktion immer noch leer). Abgesehen davon, dass 'Vector' ziemlich veraltet ist, warum nicht stattdessen' ArrayList' verwenden? – Thomas

+0

Sie sollten vermeiden, dass Sie Ihre Klasse wie einen gewöhnlichen Built-in-Typ benennen. 'Vector' ist eine eingebaute Klasse. Wie Sie Ihre eigenen haben, gibt es keine Möglichkeit zu wissen, was Sie reparieren müssen. –

+0

'Uniform' erstellt einen anderen, neuen Vector - könnte das das Missverständnis sein? Eine weitere Bemerkung: besser lange verwenden. Long, vielleicht mit einem 'booleschen berechnet;'. Long ist viel langsamer wegen der Notwendigkeit zu lange Boxen/Unboxing und eine mögliche Null-Überprüfung. –

Antwort

0

Mit dem einheitlichen Code, müssen Sie eine neue Vector vector erstellen, und dann schreiben Sie eine Schleife, die durch alle einzelnen Elemente der vector geht, und dann jedes Element mit dem angegebenen Wert im Konstruktor zuweisen. Sobald dies geschehen ist, dann den Vektor zurück, die erzeugt wird, wie so:

Vector vector = new Vector(length); 

for (int i = 0; i < length; i++) { 
    vector.elements[i] = value; 
} 

return vector; 
Verwandte Themen