Java If-Bedingung, for-Schleife, boolean Methode?

Hier der Quellcode zu der Frage - (Computer, Informatik, Java)

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

Woher ich das weiß:Berufserfahrung – Software-Entwicklung
ZaoDaDong  28.03.2018, 16:49

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.

0

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;
}
}