Wieso wird die Methode nochmal aufgerufen?

Ostkreuz

Aktives Mitglied
Hallo diese do while Schleife wird immer zwei Mal aufgerufen, egal ob die Methode changeField true oder false zurückgibt woran liegt das?
Java:
    private void playersTurn() {

        System.out.println("Spieler ist am Zug.");
        villainBoard.print(hideVillainShips);

        int[] playerSearch = null;
        do {
            villainBoard.changeField();
            villainBoard.print(true);
        }
        while (villainBoard.changeField());

Code:
    public boolean changeField() {
        TreasuryHuntGame test1 = new TreasuryHuntGame();
        int[] checkcoordinates  = test1.getUserCoordinates();
        if (fields[checkcoordinates[0]] [checkcoordinates[1]] == TREASURE) {
            fields[checkcoordinates[0]] [checkcoordinates[1]] = HIT;
            System.out.println("TREFFER!");
            return true;
        }
        else if (fields[checkcoordinates[0]] [checkcoordinates[1]] == '.') {
            fields[checkcoordinates[0]] [checkcoordinates[1]] = '-';
            System.out.println("DER GING DANEBEN!");
            return false;
        }
        else {
            System.out.println("Daneben");
            return false;
        }
    }
 
Du hast ja auch zwei Aufrufe.
Einmal in der Schleife - ohne die Rückgabe zu beachten.
Dann in der Schleifenbedingung rufst du die Methode noch einmal auf.
Ok stimmt aber wie kann ich denn dort überprüfen ob die Methode true ist ohne sie aufzurufen? Soll ich dafür noch eine Methode erstellen die nur das true oder false von changeField zurückgibt?
Java:
    private void playersTurn() {

        System.out.println("Spieler ist am Zug.");
        villainBoard.print(hideVillainShips);
        boolean check;

        int[] playerSearch = null;
        do {
            check = villainBoard.changeField();
            villainBoard.print(true);
        }
        while (check == true);
So funktioniert es auch oder?
 
Ok stimmt aber wie kann ich denn dort überprüfen ob die Methode true ist ohne sie aufzurufen? Soll ich dafür noch eine Methode erstellen die nur das true oder false von changeField zurückgibt?
Java:
    private void playersTurn() {

        System.out.println("Spieler ist am Zug.");
        villainBoard.print(hideVillainShips);
        boolean check;

        int[] playerSearch = null;
        do {
            check = villainBoard.changeField();
            villainBoard.print(true);
        }
        while (check == true);
So funktioniert es auch oder?
Ja, aber einen Boolean mit True zu vergleichen ... da kommt eh nur wieder ein Boolean raus. Warum nicht einfach direkt den Boolean abfragen?
 

Neue Themen


Zurück
Oben