2016-11-14 1 views
-4

Ich möchte in der Lage sein, den Wert einer lokalen Variablen in einem Konstruktor innerhalb der Klasse über die Haupttreiberklasse an einem bestimmten Punkt ändern, während das Programm ausgeführt wird. Wie könnte ich das erreichen?Ändern einer Instanzvariable innerhalb der Main-Klasse oder Hauptmethode

Hier ist ein Beispiel eines Konstruktors, den ich verwende.

public Scale() 
{ 
    weight = 0; 
    unit = "kg"; 
} 

Ich möchte den Wert des Gewichts zu einem Zeitpunkt ändern, während das Programm im Treiber ausgeführt wird.

+0

Das ist keine lokalen Variablen etwas so einfach wie setWeight(), oder etwas kompliziert wie ein Verfahren sein. Was hast du probiert? Wissen Sie, wie Sie eine Instanz Ihres Objekts konstruieren können? Hast du Getter und Setter? –

+1

@ cricket_007: Es sieht so aus, als müsste er einen Java-Text genau auf diese - Getter- und Setter-Methode lesen. Beantwortete als Community-Wiki, aber ich stimme auch zu schließen, da dies am besten beantwortet wird, wenn er einen grundlegenden Java-Text studiert. –

Antwort

1

Es klingt, als ob Sie der Klasse eine Methode geben möchten, die es ermöglicht, dass externer Code den Zustand der Felder der Klasse ändern oder "mutieren" kann. Solche "Mutator" -Methoden werden üblicherweise in Java verwendet, beispielsweise "Setter" -Methoden. Hier public void setWeight(int weight):

public void setWeight(int weight) { 
    this.weight = weight; 
} 
+0

Ich kann nicht glauben, dass ich es nicht herausgefunden habe. Ich hatte bereits einen Setter/Mutator, der genau diesem ähnlich ist, aber er hat nicht in meinem Kopf geklickt. Klassen sind noch ziemlich neu für mich. Vielen Dank! – JKawa

-1

Der beste Weg, zu ermöglichen, dass wahrscheinlich durch eine Methode wäre. Es könnte für das Hinzufügen von Elementen zu der Skala ...

public class Scale { 

    private float weight = 0; 
    private String unit = "kg"; 

    public void setWeight(float weight) { 
     this.weight = weight; 
    } 

    public void addItem(Item i) { // Assumes that Item is an interface defined somewhere else... 
     this.weight += i.getWeight(); 
    } 

    public static void main(String[] args) { 
     Scale s = new Scale(); 
     s.setWeight(4.0F); // sets the weight to 4kg 
     s.addItem(new Item() { 
      @Override 
      public float getWeight() { 
       return 2.0F; 
      } 
     }); // Adds 2kg to the previous 4kg -- total of 6kg 
    } 

} 
Verwandte Themen