字母没有出现在输出中?

时间:2014-01-20 01:34:24

标签: java

所以,我正在创建一个基于文本的游戏,你用字母“S,M,A,R,T”填写棋盘上的空白。为了击败这个游戏,每行和每列只能包含5个给定字母中的1个。 (它有点像游戏Sudoku)游戏运行得非常好但是当用户输入他们想要字母的行和列时,它不会出现在棋盘上。有人可以帮帮我吗?先感谢您。 (注意:我还是java编码的新手)

import java.util.Scanner;

public class SmartPuzzleProgram{
    static Scanner keyboard = new Scanner(System.in);
    static char[][] table = new char[5][5];

    public static void main (String[] args){
    Board(table);

    int i = 0;
    while (i < 5){
        if(  ((int)table[i][0] + (int)table[i][1] + (int)table[i][2] + (int)table[i][3] + (int)table[i][4]) != 391  ){
        Move();
        Board(table);
        }
            else
                i++;
            } 

    int j = 0;
    while (i < 5){
        if(  ((int)table[0][j] + (int)table[1][j] + (int)table[2][j] + (int)table[3][j] + (int)table[4][j]) != 391  ){
        Move();
        Board(table);
        }
            else
                j++;
            }

    System.out.println("Congratulations! You must be SMART.");
    }

        public static void Move(){

        // Ask for user's input
        System.out.print("Enter a row (1-5): ");
        int r = keyboard.nextInt();
        System.out.print("Enter a column (1-5): ");
        int c = keyboard.nextInt();
        System.out.print("Enter a letter (S,M,A,R or T): ");
        char L = keyboard.next().toUpperCase().charAt(0);

        if (L == 'S' || L == 'M' || L == 'A' || L == 'R' || L == 'T') {
        table[r-1][c-1] = L; 
        }
            else 
                // Error check
                System.out.println("Invalid letter. Use 'S', M', 'A', 'R' or 'T'");
            }

        public static void Board(char[][] t){   

        // Given variables 
        t[0][0] = 'S';  
        t[0][1] = 'M';
        t[0][2] = 'A';      
        t[0][3] = 'R';
        t[0][4] = 'T';  

        t[1][0] = ' ';
        t[1][1] = 'T';    
        t[1][2] = 'S';  
        t[1][3] = 'M';        
        t[1][4] = ' ';   

        t[2][0] = ' ';            
        t[2][1] = ' ';
        t[2][2] = 'R';  
        t[2][3] = ' ';  
        t[2][4] = 'S';

        t[3][0] = ' ';      
        t[3][1] = 'S';  
        t[3][2] = 'M';  
        t[3][3] = ' ';  
        t[3][4] = ' ';  

        t[4][0] = ' ';        
        t[4][1] = ' ';        
        t[4][2] = 'T';
        t[4][3] = 'S';  
        t[4][4] = ' ';  

        // Prints out the board       
        System.out.println("    1   2   3   4   5  ");
        System.out.println("   ---+---+---+---+--- ");
        System.out.println("1 | " + t[0][0] + " | " + t[0][1] + " | " + t[0][2] + " | " + t[0][3] + " | " + t[0][4] + " |");
        System.out.println("   ---+---+---+---+--- ");
        System.out.println("2 | " + t[1][0] + " | " + t[1][1] + " | " + t[1][2] + " | " + t[1][3] + " | " + t[1][4] + " |");
        System.out.println("   ---+---+---+---+--- ");
        System.out.println("3 | " + t[2][0] + " | " + t[2][1] + " | " + t[2][2] + " | " + t[2][3] + " | " + t[2][4] + " |");
        System.out.println("   ---+---+---+---+--- ");
        System.out.println("4 | " + t[3][0] + " | " + t[3][1] + " | " + t[3][2] + " | " + t[3][3] + " | " + t[3][4] + " |");
        System.out.println("   ---+---+---+---+--- ");
        System.out.println("5 | " + t[4][0] + " | " + t[4][1] + " | " + t[4][2] + " | " + t[4][3] + " | " + t[4][4] + " |");
        System.out.println("   ---+---+---+---+--- ");
        }
}

1 个答案:

答案 0 :(得分:1)

问题是,每次调用Board()方法时,都要将值分配给表,您可能只想初始化它们一次。为此,创建一个新方法,比方说initialize()

public static void initialize()
{
    System.out.println("here");
    table[0][0] = 'S';
    table[0][1] = 'M';
    table[0][2] = 'A';
    table[0][3] = 'R';
    table[0][4] = 'T';

    table[1][0] = ' ';
    table[1][1] = 'T';
    table[1][2] = 'S';
    table[1][3] = 'M';
    table[1][4] = ' ';

    table[2][0] = ' ';
    table[2][1] = ' ';
    table[2][2] = 'R';
    table[2][3] = ' ';
    table[2][4] = 'S';

    table[3][0] = ' ';
    table[3][1] = 'S';
    table[3][2] = 'M';
    table[3][3] = ' ';
    table[3][4] = ' ';

    table[4][0] = ' ';
    table[4][1] = ' ';
    table[4][2] = 'T';
    table[4][3] = 'S';
    table[4][4] = ' ';
}

并在main()

的开头调用它
public static void main(String[] args)
{
    initialize();
    Board(table);
    ...
}