繁体   English   中英

扫描仪仅接受一次输入

[英]Scanner only accepting input once

最近,我一直在从事Noughts and Crosses游戏,但偶然发现了一个似乎无法解决的问题。

每当我第一次输入内容时,它都可以工作并打印出电路板,但是从那以后,它将停止检查并打印出电路板。

        while(inf){
        String temp = input.next();
        if(playerTurn == 1){
            if(amountP1 <= 3){
                if(temp.equalsIgnoreCase("00")){
                    if(board[0][0] == 0){
                        board[0][0] = 1;
                        showBoard(board);
                        playerTurn = 2;
                        amountP1++;
                    }
                    else{
                        System.out.println("This space is already occupied!");
                    }
                }
                else if(temp.equalsIgnoreCase("01")){
                    if(board[0][1] == 0){
                        board[0][1] = 1;
                        showBoard(board);
                        playerTurn = 2;
                        amountP1++;
                    }
                    else{
                        System.out.println("This space is already occupied!");
                    }
                }
                else if(temp.equalsIgnoreCase("02")){
                    if(board[0][2] == 0){
                        board[0][2] = 1;
                        showBoard(board);
                        playerTurn = 2;
                        amountP1++;
                    }
                    else{
                        System.out.println("This space is already occupied!");
                    }
                }
                else if(temp.equalsIgnoreCase("10")){
                    if(board[1][0] == 0){
                        board[1][0] = 1;
                        showBoard(board);
                        playerTurn = 2;
                        amountP1++;
                    }
                    else{
                        System.out.println("This space is already occupied!");
                    }
                }
                else if(temp.equalsIgnoreCase("11")){
                    if(board[1][1] == 0){
                        board[1][1] = 1;
                        showBoard(board);
                        playerTurn = 2;
                        amountP1++;
                    }
                    else{
                        System.out.println("This space is already occupied!");
                    }
                }
                else if(temp.equalsIgnoreCase("12")){
                    if(board[1][2] == 0){
                        board[1][2] = 1;
                        showBoard(board);
                        playerTurn = 2;
                        amountP1++;
                    }
                    else{
                        System.out.println("This space is already occupied!");
                    }
                }
                else if(temp.equalsIgnoreCase("20")){
                    if(board[2][0] == 0){
                        board[2][0] = 1;
                        showBoard(board);
                        playerTurn = 2;
                        amountP1++;
                    }
                    else{
                        System.out.println("This space is already occupied!");
                    }
                }
                else if(temp.equalsIgnoreCase("21")){
                    if(board[2][1] == 0){
                        board[2][1] = 1;
                        showBoard(board);
                        playerTurn = 2;
                        amountP1++;
                    }
                    else{
                        System.out.println("This space is already occupied!");
                    }
                }
                else if(temp.equalsIgnoreCase("22")){
                    if(board[2][2] == 0){
                        board[2][2] = 1;
                        showBoard(board);
                        playerTurn = 2;
                        amountP1++;
                    }
                    else{
                        System.out.println("This space is already occupied!");
                    }
                }
            }
            else if(playerTurn == 2){
                if(amountP2 <= 3){
                    if(temp.equalsIgnoreCase("00")){
                        if(board[0][0] == 0){
                            board[0][0] = 2;
                            showBoard(board);
                            playerTurn = 1;
                            amountP2++;
                        }
                        else{
                            System.out.println("This space is already occupied!");
                        }
                    }
                    else if(temp.equalsIgnoreCase("01")){
                        if(board[0][1] == 0){
                            board[0][1] = 2;
                            showBoard(board);
                            playerTurn = 1;
                            amountP2++;
                        }
                        else{
                            System.out.println("This space is already occupied!");
                        }
                    }
                    else if(temp.equalsIgnoreCase("02")){
                        if(board[0][2] == 0){
                            board[0][2] = 2;
                            showBoard(board);
                            playerTurn = 1;
                            amountP2++;
                        }
                        else{
                            System.out.println("This space is already occupied!");
                        }
                    }
                    else if(temp.equalsIgnoreCase("10")){
                        if(board[1][0] == 0){
                            board[1][0] = 2;
                            showBoard(board);
                            playerTurn = 1;
                            amountP2++;
                        }
                        else{
                            System.out.println("This space is already occupied!");
                        }
                    }
                    else if(temp.equalsIgnoreCase("11")){
                        if(board[1][1] == 0){
                            board[1][1] = 2;
                            showBoard(board);
                            playerTurn = 1;
                            amountP2++;
                        }
                        else{
                            System.out.println("This space is already occupied!");
                        }
                    }
                    else if(temp.equalsIgnoreCase("12")){
                        if(board[1][2] == 0){
                            board[1][2] = 2;
                            showBoard(board);
                            playerTurn = 1;
                            amountP2++;
                        }
                        else{
                            System.out.println("This space is already occupied!");
                        }
                    }
                    else if(temp.equalsIgnoreCase("20")){
                        if(board[2][0] == 0){
                            board[2][0] = 2;
                            showBoard(board);
                            playerTurn = 1;
                            amountP2++;
                        }
                        else{
                            System.out.println("This space is already occupied!");
                        }
                    }
                    else if(temp.equalsIgnoreCase("21")){
                        if(board[2][1] == 0){
                            board[2][1] = 2;
                            showBoard(board);
                            playerTurn = 1;
                            amountP2++;
                        }
                        else{
                            System.out.println("This space is already occupied!");
                        }
                    }
                    else if(temp.equalsIgnoreCase("22")){
                        if(board[2][2] == 0){
                            board[2][2] = 2;
                            showBoard(board);
                            playerTurn = 1;
                            amountP2++;
                        }
                        else{
                            System.out.println("This space is already occupied!");
                        }
                    }
                }
            }
        }
    }

这是印制电路板的方法:

    public static void showBoard(int x[][]){
    int rowNumber = 1;
    for(int row = 0 ; row < x.length ; row++){
        for(int column = 0 ; column < x[row].length ; column++){
            if(x[row][column] == 0){
                if(rowNumber <= 2){
                System.out.print(" E");
                rowNumber++;
                }
                else if(rowNumber == 3){
                    System.out.println(" E");
                    rowNumber = 1;
                }
            }
            else if(x[row][column] == 1){
                if(rowNumber <= 2){
                System.out.print(" X");
                rowNumber++;
                }
                else if(rowNumber == 3){
                    System.out.println(" X");
                    rowNumber = 1;
                }
            }
            else if(x[row][column] == 2){
                if(rowNumber <= 2){
                System.out.print(" O");
                rowNumber++;
                }
                else if(rowNumber == 3){
                    System.out.println(" O");
                    rowNumber = 1;
                }
            }
        }
    }
}

另外,我知道这段代码是一团糟,可能还有许多其他更有效的方式来执行此操作,但是由于我是一位相当新的程序员,因此我选择在此功能上选择功能而不是效率。

您的else if(playerTurn == 2)行需要拉到与if(playerTurn == 1)相同的级别:

if(playerTurn == 1){
    if(amountP1 <= 3){
        //...
    }
    else if(playerTurn == 2){
        //...
    }
}

应该成为

if(playerTurn == 1){
    if(amountP1 <= 3){
        //...
    }
} else if(playerTurn == 2) {
    //...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM