Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Do循环不是';t终止于tic-tac-toe游戏_Java - Fatal编程技术网

Java Do循环不是';t终止于tic-tac-toe游戏

Java Do循环不是';t终止于tic-tac-toe游戏,java,Java,wincondition在Siegbeingung()中。如果Siegbeingung()为真,我希望do循环停止,但即使看起来满足wincondition,循环也不会终止。ausgewählteReihe是chosenRow,ausgewählteSpalte是球员的chosenColumn 我的想法是:如果玩家1选择了2,2,并且他已经在1,2和3,2上得到了分数,那么它应该验证第二个胜利条件并返回true,这样就满足了do循环的while条件并终止 import java.util.Sca

wincondition在Siegbeingung()中。如果Siegbeingung()为真,我希望do循环停止,但即使看起来满足wincondition,循环也不会终止。ausgewählteReihe是chosenRow,ausgewählteSpalte是球员的chosenColumn

我的想法是:如果玩家1选择了2,2,并且他已经在1,2和3,2上得到了分数,那么它应该验证第二个胜利条件并返回true,这样就满足了do循环的while条件并终止

import java.util.Scanner;

public class TTT {
    static Scanner sc =  new Scanner(System.in);
    static final int spalte = 3;
    static final int reihe = 3;
    static int[][] feld = new int[reihe][spalte];
    static int leer = 0;
    static int kreuz = 1;
    static int kreis = 2;
    static int spieler;
    static int ausgewählteReihe;
    static int ausgewählteSpalte;
    static int spielerSymbol;
    static boolean siegBedingung;

public static void main(String[] args) {


    start();
    do {
    brett();
    zug();
    siegBedingung();
    }while(siegBedingung == false);
    System.out.println("Spieler " + spielerSymbol + " gewinnt.");
}

public static void start() {
    for(int zählerReihe = 0; zählerReihe < reihe; zählerReihe++) {
        for(int zählerSpalte = 0; zählerSpalte < spalte; zählerSpalte++) {
            feld[zählerReihe][zählerSpalte] = leer;
        }
    }
    spielerSymbol = 1;
}

public static void zug() {
    boolean validInput = false;
    do {
        if(spielerSymbol == 1) {
            System.out.println("Spieler 1 (Kreuz) ist am Zug."); 
        }
        if(spielerSymbol == 2) {
            System.out.println("Spieler 2 (Kreis) ist am Zug.");
        }
        System.out.println("Geben Sie die gewünschte Reihe ein.");
        ausgewählteReihe = sc.nextInt() -1;
        System.out.println("Geben Sie die gewünschte Spalte ein.");
        ausgewählteSpalte = sc.nextInt() -1;
        if(ausgewählteReihe >= 0 && ausgewählteReihe < reihe && ausgewählteSpalte >= 0 && ausgewählteSpalte < spalte && feld[ausgewählteReihe][ausgewählteSpalte] == leer) {
            feld[ausgewählteReihe][ausgewählteSpalte] = spielerSymbol;
            validInput=true;
        } else {
            System.out.println("Das ausgewählte Feld ist nicht gültig.");
        }
    }while(!validInput==true);
    spielerSymbol = (spielerSymbol == 1) ? 2 : 1;
}

public static boolean siegBedingung() {
    return(feld[ausgewählteReihe][0] == spielerSymbol && feld[ausgewählteReihe][1] == spielerSymbol && feld[ausgewählteReihe][2] == spielerSymbol
    || feld[0][ausgewählteSpalte] == spielerSymbol && feld[1][ausgewählteSpalte] == spielerSymbol && feld[2][ausgewählteSpalte] == spielerSymbol
    || feld[1][1] == spielerSymbol && feld[2][2] == spielerSymbol && feld[0][0] == spielerSymbol
    || feld[0][2] == spielerSymbol && feld[1][1] == spielerSymbol && feld[2][0] == spielerSymbol);
}
public static void brett() {
    for(int zählerReihe = 0; zählerReihe < reihe; zählerReihe++) {
        for(int zählerSpalte = 0; zählerSpalte < spalte; zählerSpalte++) {
            System.out.print("|");
            zelle(feld[zählerReihe][zählerSpalte]);
        }
        System.out.print("|");
        System.out.println();
    }
}

public static void zelle(int inhalt) {
    switch(inhalt) {
    case 0: System.out.print("_"); break;
    case 1: System.out.print("X"); break;
    case 2: System.out.print("O"); break;
    }
}
import java.util.Scanner;
公共类TTT{
静态扫描仪sc=新扫描仪(System.in);
静态最终int spalte=3;
静态最终int reihe=3;
静态int[]feld=新int[reiche][spalte];
静态int leer=0;
静态int kreuz=1;
静态int kreis=2;
静态int-spieler;
ausgewählteReihe的静态输入;
ausgewähltesplate静态内部;
静态整数符号;
静态布尔Siegbeingung;
公共静态void main(字符串[]args){
start();
做{
布雷特();
zug();
齐格贝丁贡();
}while(siegBedingung==false);
System.out.println(“Spiler”+SpilerSymbol+“gewinnt”);
}
公共静态void start(){
for(int zählerReihe=0;zählerReihe=0和ausgewählteReihe=0和ausgewählteSpalte

}

所以我测试了你的代码,它成功了。我需要这些东西来改变:

start();
do {
    spielerSymbol = (spielerSymbol == 1) ? 2 : 1;
    brett();
    zug();
} while (!siegBedingung());
System.out.println("Spieler " + spielerSymbol + " gewinnt.");
zug()
中删除最后一行

更改
Siegbeingung
,如用户建议的其他更改:

public static boolean siegBedingung() {
    return (feld[ausgewählteReihe][0] == spielerSymbol && feld[ausgewählteReihe][1] == spielerSymbol
            && feld[ausgewählteReihe][2] == spielerSymbol)
            || (feld[0][ausgewählteSpalte] == spielerSymbol && feld[1][ausgewählteSpalte] == spielerSymbol
                    && feld[2][ausgewählteSpalte] == spielerSymbol)
            || (feld[1][1] == spielerSymbol && feld[2][2] == spielerSymbol && feld[0][0] == spielerSymbol)
            || (feld[0][2] == spielerSymbol && feld[1][1] == spielerSymbol && feld[2][0] == spielerSymbol);
}

您好,添加了它,但它仍然没有终止。为什么变量与方法同名?@AndrewLi ask OP,他将其命名为way@JohnnyAW它应该是固定的。哎呀,我不需要的变量实际上和删除它。但是,
}而(!siegBedingung())
也没有终止