简体   繁体   English

字母没有出现在输出中?

[英]Letters aren't appearing in the output?

So, I am creating a text-based game where you fill in the blanks on the board with the letters, "S, M, A, R, T". 因此,我正在创建一个基于文本的游戏,您在游戏板上用字母“ S,M,A,R,T”填充空白。 To beat this game each row and column can only contain 1 out of the 5 given letters. 为了打败这个游戏,每一行和每一列只能包含5个给定字母中的1个。 (It's kind of like the game Sudoku) The game runs perfectly fine but when the user inputs the the row and column they want the letter to be in, it doesn't appear on the board. (有点像数独游戏)该游戏运行完美,但是当用户输入要输入字母的行和列时,它不会出现在板上。 Could anyone please help me out? 有人可以帮我吗? Thank you in advance. 先感谢您。 (Note: I am still new to java coding) (注意:我还是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("   ---+---+---+---+--- ");
        }
}

The problem is that you are assigning the values to table each time you call the Board() method, you may want to initialize them just one time. 问题是您每次调用Board()方法时都将值分配给表,您可能只想初始化一次。 For this, create a new method, let's say initialize() : 为此,创建一个新方法,比如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] = ' ';
}

And call it at the beginning of the main() : 并在main()的开头调用它:

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

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

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