Java Wie etwas aus einer Funktion bekommen?

Liked

Ensign
Registriert
Sep. 2011
Beiträge
238
Hallo,

ich habe eine public Funktion Funktion1(). In dieser wird eine Datei "Datei1" geöffnet. Ich möchte in Funktion2() auf den Dateiname von Datei1 zugreifen. Funktion1() ist void und sollte es auch bleiben. Wie kann ich von Funktion2() auf Funktion1() zugreifen?

Vielen Dank im Voraus :)
 
Klassenvariable oder Instanzvariable der Klasse.
Ggf. mit einer getter Funktion.

Aber das riecht schon stark nach Hausaufgabe...
 
Danke für die schnelle Antwort.
Es ist keine Hausaufgabe. Die sind schon Jahre her. Bin nur etwas im Programmieren eingerostet und möchte jetzt wieder damit anfangen. ;)
Hatte es auch über eine Klassenvariable gemacht. Über einen getter geht es bestimmt schöner, stimmt.

Mein nächstes Problem liegt darin, dass ich den Dateinamen in der Funktion2 weiterverwenden möchte. Und zwar möchte ich die Variable in einem ProcessBuilder der die command line und dann diese Datei in einem bestimmten Pfad aufrufen soll.
Code:
ProcessBuilder builder = new ProcessBuilder(
                "cmd.exe", "/c", "cd \"C:\\Users\\user\\Desktop\\selectionTool\\main\\public\" && java -classpath ..\\xslt\\saxon9he.jar net.sf.saxon.Transform ..\\mm\\test.mm ..\\xslt\\standard.xsl t=../templates/standard.html");

Ich möchte die 3 Dateien test.mm, standard.xsl und standard.html in der Zeichenkette variabel durch die Dateinamen, also 3 Strings ersetzbar machen. Ein zwischenfügen wie bei der print Funktion funktioniert hier jedoch leider nicht..
 
Anbieten würde sich hier auch eine getter/setter Funktion der Variable or eine funktionenübergreifende Variable.

Da Prozessbuilder einen String als Parameter hat kannst du Zeichenketten mit + verbinden.

Code:
String file1 = new String("datei1.txt");
new Processbuilder("C:\\test\" + file1);
 
Da Java kein Call-By-Reference kennt, könnte man den Return-Wert auch mittels eines Parameters austauschen (entweder eine eigene Klasse, oder ein Array/Collection).

Aber wenn der Name an mehreren Stellen benötigt wird, würde ich diesen zuerst ermitteln und dann den anderen Funktionen entweder übergeben oder eben in einer Klassenvariablen speichern, auf die die Funktionen zugreifen können. Funktion1() und Funktion2() befinden sich in der selben Klasse?

Seit Java 5 kann man Strings printf-mäßig formatieren: https://docs.oracle.com/javase/1.5....tml#format(java.lang.String, java.lang.Object...)
 
Danke euch für eure Antworten. Hat super geklappt.
Was ich jetzt noch brauche ist eine JavaFX progressBar, die ausgeführt wird, wenn eine Funktion gestartet und erfolgreich beendet wurde. Könnt ihr mir einen Tipp geben wie ich das anstellen könnte? Hab bisher nichts passendes gefunden.
 
Was heißt "nichts passendes"? Keine die dir gefällt? Keine, die du einfach in dein Projekt Copy-Pasten kannst?
 
Doch nur hängen diese progressBars immer von Variablen ab die hoch -oder abgezählt werden. In meinem Fall rufe ich in einer Funktion über die command line ein Skript auf. Optimal wäre es wenn man die Schritte in einer solchen Fortschrittsleiste abbilden könnte.
 
Zurück
Oben