Java If-Bedingung, for-Schleife, boolean Methode?
Ich kenn mich mit Java noch nicht wirklich aus und weiß hier im Moment nicht wie ich das, was ich vorhabe umsetzen kann.
Ich möchte, dass wenn ich die Methode „problemVorhanden“ 5 mal aufgerufen habe, die Konsole „Problem entdeckt“ und ansonsten „Kein Problem entdeckt“ ausgibt.
Ich hab jetzt alles mögliche versucht das irgendwie hinzubekommen, aber es funktioniert nicht.
Was muss ich jetzt in die if-Bedingung schreiben, damit es funktioniert, bzw. kann das so überhaupt funktionieren?

7 Antworten
private int counter;
private boolean problemVorhanden()
{
counter++;
if(counter >= 5)
{
System.out.println("Problem vorhanden");
return true;
}
return false;
}
Wird die Methode das 5te mal aufgerufen gibt sie true zurück und schreibt Problem vorhanden in die Konsole.
Bei weniger als 5 aufrufen gibt sie false zurück, ob und wann dein Programm jetzt Kein Problem entdeckt zurückgeben soll hast du noch nicht definiert.
Soll der Satz ausgegeben werden wenn die Methode weniger als 5mal aufgerufen wird musst du einfach nur den Rückgabewert der Methode nach dem letzten Aufruf testen, ist der true gibt es ein Problem ansonsten nicht.
Btw die Methode schreibt jetzt immer Problem vorhanden sobald sie mindestens 5 mal aufgerufen wurde. Soll sie nur beim 5ten mal Problem vorhanden schreiben kannst du den Satz mit if(counter == 5 ausgeben).
Bei einem return-Statement wird die Methode sofort verlassen und der Rückgabewert zurückgegeben. Sequenzen hinter einem return-Statement geben somit keinen wirklichen Sinn. Tausche die beiden Anweisungen um, dann sollte es funktionieren.
LG
Es sind halt nicht alle so superschlau wie Du, ZoaDaDong ;-)
for (i = 0; i != 5; i++) {
System.out.println("Problem nicht entdeckt!");
}
System.out.println("Problem entdeckt!");
Hierbei wird zuerst 5mal Problem nicht entdeckt ausgegeben und Anschließend 1x Problem entdeckt, da die For-Schleife verlassen wird
Indem du für das Objekt entsprechend einen Fehlercounter führst.
Beispiel:
public class TestObject {
private int errCnt;
public TestObject(){
errCnt=0;
}
public void testErrCnt(){
if(errCnt==4){
System.out.println("Problem vorhanden.");
}
else{
System.out.println("Kein Problem entdeckt.");
}
}
private void error(){
errCnt++;
}
}
Wenn die Methode "error" aufgerufen wird, dann wird errCnt um eins erhöht.
Eine andere Möglichkeit, so wie du es anscheinend gerne hättest:
public class TestObject {
int errCnt;
public TestObject(){
errCnt=0;
}
private void problemVorhanden(){
errCnt++;
if(errCnt==4){
System.out.println("Fehler entdeckt");
}
else{
System.out.println("Kein Fehler entdeckt");
}
}
}
Das ganze macht halt aus meiner Sicht recht wenig Sinn.
Nach einen return, wird der Methoden-Durchlauf beendet. In deinen Fall wird die for schleife im ersten durchlauf beendet.
Eine mögliche Lösung wäre eine globale Variable.
Int aufrufe=0;
Public boolean problemfinden(){
aufrufe++;
If (aufrufe>=5) {
System.out.println (“error“);
Return true;
}
else {
System.out.prinrln (“kein error“);
Return false;
}
}
Das ist sogar schon in der IDE markiert. Da hätte man nur mal lesen müssen. Das regt mich gerade etwas auf muss ich sagen.