Variable aus einer Methode heraus in eine andere Klasse übergeben

Epimeth

Mitglied
Hallo,

ich komme leider schon wieder nicht weiter.
Stehe nun vor dem Problem ich möchte einen String in eine andere Klasse übergeben.

Aus der Klasse EinAus()
soll ein String in die Klasse Matrix() übergeben werden.
Ohne das die Klasse Matrix die Klasse EinAus () extra nochmal aufruft, sondern sobald der Wert berechnet ist soll die Klasse EinAus() den String übergeben.

Wie mach man das?
 
Hi,

Du könntest in der Klasse Matrix einen String deklarieren und diesen durch eine Methode bestimmen. Diese könntest du dann von der Klasse EineAus aufrufen und den String übergeben. Hier ein Beispiel für diese Methode:

Java:
public void setString(String st)
{

string = st;

}

(string muss oben in der Klasse deklariert werden)

Und so kannst du ganz einfach die Methode von der Klasse EinAus aus aufrufen:

Java:
new Matrix().setString("Dies ist der String");


Falls du den Konstruktor nicht aufrufen möchtest, die Methode setString static machen. Falls du nicht weißt, wie das geht, einfach melden.

MFG
 
Hallo,
habe versucht deinen Rat zu befolgen aber es funktioniert nciht so richtig.
Übrigens ich versuche den String von EinAus an Datei (zur Orientierung).

Das steht nun in der Klasse Datei.

Java:
public class Datei {
	private EinAus k1 = new EinAus();
	 
	

	public void Datei_Speichern()
	{	
	     String Titel = k1.Titel();
	     String Verzeichnis=k1.Verzeichnis();
	    String []numbers=new EinAus().werteEingeben(m[1]);
	     
	}
}

Was ist daran falsch? Es heißt m cannot resolved

Der betreffende Quelltext in der Klasse EinAus ist bei mir

Java:
 public void werteEingeben(String m[])
String [] q=new String[999];
q[1]=4;
m[1]=q[1];

Danke für die erste Antwort.
 
Tut mir Leid ich kann mir leider nicht denken was du vorhast... Bitte eine kurze Erklärung zu deinem Programm schreiben.

Aber hier ist der Fehler ja eigentlich klar:

Java:
String []numbers=new EinAus().werteEingeben(m[1]);

Wo wird hier m[] deklariert?? Du übergibst ja einen String. m[] ist ja nur in deiner Methode bekannt.
Und so wie ich das sehe, versuchst du nicht einen String zu übergeben, sondern zurückzubekommen?? Du willst, dass numbers[] den gleichen Wert wie der String m[] hat.

Dann probiere es mal so:

Java:
public class Datei {
    private EinAus k1 = new EinAus();
     
    
 
    public void Datei_Speichern()
    {   
         String Titel = k1.Titel();
         String Verzeichnis=k1.Verzeichnis();
        String []numbers=new EinAus().werteEingeben();
         
    }
}

Java:
 public String[] werteEingeben()
String[] deinString =new String[999];

// Hier gibst du deinem String die Werte

return deinString;

Falls ich mich Irre Entschuldige ich mich. Falls nicht, dann bitte ich um Rückmeldung, ob es geklappt hat.
 
mal ne doofe frage: warum deklarierst du die variable nicht außerhalb der methode als public und initialisierst/füllst sie in der methode nur?
 
Hallo,
danke für die Antwort, es geht darum das die Klasse einen Wert ausrechnet und ich ihn später in der Klasse Datei dann benötige.
Ich wollte daher das der String wenn er einmal berechnet wurde direkt in die Klasse Datei übergeben wird und so wie es jetzt aussieht funktioniert es.
Nur leider will ich nicht das die Methode deswegen neu ausgeführt wird sonder die Methode soll von sich direkt den Wert in der anderen Klasse ablegen?
Geht das Überhaupt?
 
Ach so willst du das =) Hoffe mal dass ich es jetzt richtig verstanden habe. Dann mache in der Klasse Datei eine Methode die den Wert setzt:

Java:
public void setString(String st) 
{

string = st;

}

Der String string muss natürlich wieder global in der Klasse Datei deklariert sein.

Und so rufts du sie dann von der anderen Klasse auf: (Von der Methode aus, in der der String berechnet wird)

Java:
public void werteBerechnen()
{

// Hier wird der String berechnet

new Datei().setString("Hier den String übergeben");

}

PS: Falls es wieder ein String-Array ist, die Methode statt
Java:
setString(String st)

in

Java:
setString(String[] st)
umbennen. Und in werteBerechnen dann auch ein String-Array übergeben:

Java:
String str[] = new String[2];

str[0] = "String 0";
str[1] = "String 1";

new Datei().setString(str);
 
Java:
new Datei().setString(str);
Eine sinnlose Zeile Code. Erstens kann der String direkt bei der Konstruktion des Objektes übergeben werden, zweitens muss eine Referenz auf das Objekt gesetzt werden, sonst wird es gleich wieder vom GC gekillt.

besser:
Java:
Datei d = new Datei(str);
Die Referenz kann natürlich auch in einer Liste oder sonst wo abgelegt werden, aber sie muss existieren.
 
Das mit dem Konstruktor ist mir klar, aber so gehts ja auch =) Aber für was sollte man eine Referenz auf die Klasse erzeugen?? Er muss ja nur ein einziges mal diese Methode aufrufen.
 
Aber für was sollte man eine Referenz auf die Klasse erzeugen??
Weil sonst der GC das Objekt gleich wieder killt. Wenn es nicht sogar vom Compiler wegoptimiert wird.
Was bringt es, wenn in Datei irgendwelche Werte berechnet werden, die aber sofort wieder gelöscht werden? Man könnte zwar theoretisch die Werte von Datei aus gleich wieder in eine andere Klasse weiterreichen, dazu müsste diese aber static sein und das wäre dann unschöner gefrickelter Code.
 
Man kann doch beim aufrufen der Methode den übergebenen Wert gleich in einer Variable der Klasse Datei speichern. Dann hat man den Wert und man braucht die Referenz nicht mehr. Oder Irre ich mich??
 
Und wie willst du auf den Wert einer Klasse zugreifen wenn du nicht auf die Klasse zugreifen kannst?

Java:
new Datei("hallo");
str = ?.getString(); // das geht nicht

Datei d = new Datei("hallo");
str = d.getString(); // das geht
 

Neue Themen


Zurück
Oben