Ausführen einer void Methode als if-Bedingung

D

DudePr

Hi,

ich habe folgendes Problem:

wie implementiere ich folgendes:
"Wenn die void Methode x ausgeführt wurde, dann gehe in den If-case"

danke für eure Hilfe,
DudePr
 
Hallo,

erstmal gibt es kein if-case. ;-)

Ich würde das so verstehen, dass eine Methode ausgeführt wird und dahinter eine if-Anweisung steht.

Gruß

Sascha
 
Hey, okay ich habs ein wenig falsch ausgedrückt. ;)

was falsch ist, weil das natürlich keine gültige Bedingung ist:

if(x.voidmethod()) {
...
}

Also ich möchte folgendes damit machen: Das im "if" soll nur ausgeführt, wenn x.voidmethod() schon ausgeführt wurde, wobei das x.voidmethod() irgendwann zur Laufzeit durch den Benutzer ausgeführt werden kann.


Aber wie schreibe ich das dann richtig ?

thx&ciao
DudePr
 
Hallo!

Ich würde da eine boolean-Variable setzen
boolean runned = false;

Bei Aufruf der Methode würde ich diese entsprechend auf true setzen
x.voidmethod();
runned = true;

Dann kannst du eine if-Anweisung folgenderweise verwenden:

if (runned) {
[Anweisungsblock]
}


Ich weiß zwar nicht, ob das so elegant ist, aber müsste imo funktionieren.

VG
 
Elegant ist sowas wirklich nicht. :)

Was genau möchtest du denn machen?
Vielleicht kann man das anders lösen.

Gruß

Sascha
 
Hi,

geht um ein kleines Spiel,
zum Beispiel das ich erst "weiter" komme, wenn ich vorher was bestimmtes mit gegebenen mitteln gemacht habe (die void methode).

Das "weiter kommen" wäre dann in dem If-Anweisungsblock.
 
Howie.

Leider sind deine Informationen etwas spärlich, deshalb tut es mir leid, falls das jetzt völlig in die falsche Richtung geht:
An deiner Stelle würde ich mir mal Java's Eventhandling (Listener) zu Gemüte führen. Eine gute Einführung ist z.B. bei >>Galileo Computing<< zu finden.

Du könntest beispielsweise am Ende deiner void-Methode ein Event abfeuern, worauf der entsprechende Listener eine andere Methode aufruft oder (wie oben gezeigt) eine boolean Variable auf true setzt.

Gruß
miffi
 
Zuletzt bearbeitet:
Moin,

also solange deine Methode kein Thread ist, wird sowieso alles was nach der Methode passiert erst ausgefürht wenn Sie durchgelaufen ist.

D.h. also eine if-Abfrage ist in diesem Fall völlig überflüssig!

Code:
voidMethode ();

{
das was danach passiert soll
}


Es sei denn du willst deine Methode erst aufrufen wenn ein bestimmter Fall ein getreten ist.

Code:
if (true){
voidMethode1();
}

else if (false) {
voidMethode2();
}

Aber wie meine Vorredner auch schon erwähnt hatten, brauch wir mehr Informationen was genau du denn vorhast, dann kann die vielleicht auch geholfen werden!
 
Hallo,
Also wenn ich dich richtig verstanden habe willst du nur abprüfen ob du zu einem früheren Zeitpunkt die ominöse Voidfunktion x schon mal ausgeführt hast.
Das lässt sich natürlich nur über eine Variable lösen. Denn wenn du dir nicht merkst, dass du etwas getan hast, kannst du später nicht mehr sagen, ob du etwas getan hast.
@Sascha
Doch, es ist elegant, weil einfach und notwendig.
Wenn jedoch viele solcher "hab ich dies schon getan?" Prüfungen notwendig werden, kann man das ganze auch in einer Key/Value Map oder einer Properties Datei speichern.
 
Zuletzt bearbeitet:
Na dann würd ich das ganze mal so verstehen:

Java:
import java.util.Scanner;

public class Example {
	private boolean isRunned = false;
	private Scanner sc;
	private String result;
	
	private Example(){
		
		sc = new Scanner(System.in);
		result = "";
		
		while (!isRunned){
			System.out.println("Soll die Methode ausgeführt werden? (y)");
			result = sc.nextLine();
			
			if (result.equals("y")){
				voidMethode();
			} else {
				System.out.println("Methode wird nicht ausgeführt.\n");
			}		
		}	
	}
	
	private void voidMethode(){
		//do whatever you want
		
		isRunned=true;		
		System.out.println("Methode wurde ausgeführt.");
	}
	
	public static void main(String[] args) {
		
		new Example();
	}
}
 
Zurück