# Boolean Wahrheitswert zählen



## CT (5. Dez 2010)

Wie kann ich bei dieser Methode abfragen, wie oft boolean hindernisRechts wahr ist?

```
public void act4(int anzahl) 
    {
                for(int i = 0;i<anzahl;i++){
                schritt();
                hindernisRechts();
                                                  }     
    
    }
```


----------



## Haave (5. Dez 2010)

```
public void act4(int anzahl) 
    {
                int counterBool = 0;
                for(int i = 0;i<anzahl;i++){
                    schritt();
                    if(hindernisRechts()) {
                        counterBool++;
                     }
                }     
    
    }
```

Sollte gehen, wenn ich mich nicht irre.


----------



## preachie (5. Dez 2010)

So zum Beispiel:


```
int anzahl = 0;
if (hindernisRechts()) {
	anzahl++;
}
```

Edit: natürlich musst Du anzahl außerhalb der Schleife setzen, da sie sonst bei jedem Lauf auf 0 gesetzt werden würde


----------



## XHelp (5. Dez 2010)

Counter machen, wenn wenn hindernesRechts() wahr ist, dann um 1 erhöhen.


----------



## CT (5. Dez 2010)

Und wie kann ich dann die Häufigkeit des true-Wertes ausgeben?


----------



## XHelp (5. Dez 2010)

Genau so wie du alles andere ausgibst... mit System.out.println?


----------



## CT (5. Dez 2010)

Sorry, ich habe grade erst angefangen mit Java. Ich weiß leider nicht wie das geht.


----------



## XHelp (5. Dez 2010)

Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 2.2 Anweisungen formen Programme


----------



## CT (5. Dez 2010)

So wird bei mir aber immer 0 ausgegeben:

```
int anzahl = 0;
public void act5(int strecke)
 
    {           
                for(int i = 0;i<strecke;i++){
                    schritt();
                    if(hindernisRechts()) {
                        anzahl++;
                     }
                }     
    
    }
    {
        System.out.println(anzahl++);
        
    }
```


----------



## preachie (5. Dez 2010)

Du definierst die Variable anzahl nicht lokal in der act5 Methode.
Zusäzlich befindet sich die Ausgabe auch nicht merh in der act5 Methode, so dass ich mich überhaupt wundere, dass der Code läuft und keinen Fehler beim kompilieren liefert.

Probier es mal wie folgt:


```
public void act5(int strecke)
{           
	int anzahl = 0;
	for(int i = 0; i < strecke; i++)
	{
		schritt();
		if(hindernisRechts()) 
		{
			anzahl++;
		}
	}     

	System.out.println(anzahl);
}
```


----------



## XHelp (5. Dez 2010)

Weil die Klammer nicht stimmen. Deine Ausgabe steht nicht in der Methode act5, sondern wird als was anderes erkannt.
Musst also NUR den Ausgabebefehl direkt hinter die Schleife schreiben.

Mal was anderes: du scheinst etwas falsch angefangen zu haben. Ließt dir erstmal in Ruhe paar Kapiteln aus eine Java Buch durch, bevor du dich ans Programmieren stürzt.


----------



## XHelp (5. Dez 2010)

preachie hat gesagt.:


> Zusäzlich befindet sich die Ausgabe auch nicht merh in der act5 Methode, so dass ich mich überhaupt wundere, dass der Code läuft und keinen Fehler beim kompilieren liefert.



Syntaktisch ist das ja auch völlig ok. Der Block, der dadurch entstanden ist nenne sich "Instanzinitialisierer": Galileo Computing :: Java ist auch eine Insel – 5.6 Klassen- und Objektinitialisierung *


----------



## preachie (5. Dez 2010)

Interessant, man lernt eben nie aus


----------



## CT (5. Dez 2010)

Und wie mache ich es, dass auch dann weitergelaufen und weitergezählt wird, wenn rechts kein Hindernis ist?


----------



## XHelp (5. Dez 2010)

Um die Frage zu beantworten wäre eine genauere Aufgabenbeschreibung um mehr Code angebracht.


----------



## CT (5. Dez 2010)

Hab das Problem schon selber gelöst, trotzdem danke!


----------

