user3000345
user3000345

Reputation: 43

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". To beat this game each row and column can only contain 1 out of the 5 given letters. (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)

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("   ---+---+---+---+--- ");
        }
}

Upvotes: 0

Views: 83

Answers (1)

Christian Tapia
Christian Tapia

Reputation: 34166

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. For this, create a new method, let's say 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():

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

Upvotes: 1

Related Questions