Jeremy Breit
Jeremy Breit

Reputation: 21

How to replace values of an array?

I am trying to do a matching game here and I am almost done. After the userInput is given, I am trying to replace the gameboard with the hidden value. I have writen the code to see if "A1" will work but it won't. Does anyone have any ideas on how to replace an element of an array with another element? Or am I doing it wrong?

import java.util.*;
public class breitje_MatchUp{
   static Scanner input = new Scanner(System.in);
   static int i=0, count=0;
   static char[][] clearBoard = new char[4][4];
   static char[][] board = new char[4][4];
   public static void main(String[] args){
      gamePlay();

   }

   public static void drawMenu(){
      System.out.println("Welcome to the Match Up game! \n");  
      System.out.println("Please select from the following: ");  
      System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");  
      System.out.println("1. New Game");  
      System.out.println("2. Quit");  
      System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");  
      int optionSelect = input.nextInt();
      System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");  
      while(optionSelect!=1 && optionSelect !=2){
         System.out.println("Please enter 1 (New Game) or 2(Quit)");
         optionSelect = input.nextInt();}
      if (optionSelect == 1)
         System.out.print("START GAME HERE********");
      else if (optionSelect == 2)
         System.out.println("Thanks for playing! Have a great day.");  
   }


   public static char[][] buildBoard(){
      char[][] board = new char[4][4];
      for(int i = 0; i <board.length; i ++){
         for(int j = 0; j<board[0].length;j++){
            board[i][j]=(char)(65+Math.random()*8);
         }
      }
      return board;
   } 

   public static void drawBoard(){
      for(int row1 = 0; row1 < 4; row1++) {
         // this will create a new line for each new row
         System.out.println("");
         for(int col1 = 0; col1 < 4; col1++) {
            // this will print out the 4 row variable values
            clearBoard[row1][col1]='.';
         }        
      }
      System.out.format("   %2s %2s %2s %2s \n",'A','B','C','D');
      System.out.format("   %2s %2s %2s %2s \n",'-','-','-','-');
      System.out.format("1 |%2s %2s %2s %2s \n",
          clearBoard[0][0],
          clearBoard[0][1],
          clearBoard[0][2],
          clearBoard[0][3]);
      System.out.format("2 |%2s %2s %2s %2s \n",
          clearBoard[1][0],
          clearBoard[1][1],
          clearBoard[1][2],
          clearBoard[1][3]);
      System.out.format("3 |%2s %2s %2s %2s \n",
          clearBoard[2][0],
          clearBoard[2][1],
          clearBoard[2][2],
          clearBoard[2][3]);
      System.out.format("4 |%2s %2s %2s %2s \n",
          clearBoard[3][0],
          clearBoard[3][1],
          clearBoard[3][2],
          clearBoard[3][3]);  
   } 


   public static void gamePlay(){
      while(!checkForWin(count)){
         drawBoard();
         System.out.print("Card 1: Column/Row (Ex: A3) : "); //input 1
         String userInput = input.nextLine(); System.out.println();
         userInput = userInput.toUpperCase().trim();

         convertInput(userInput);

         drawBoard();

         System.out.print("Card 2: Column/Row (Ex: A3) : "); //input 2
         String userInput1 = input.nextLine(); System.out.println();
         userInput1 = userInput.toUpperCase().trim();
      }
      drawMenu();
   }
   public static void convertInput(String input){
      if(input.equals("A1"))
         clearBoard[0][0]=board[0][1];

   }

   public static boolean checkForWin(int count){
      if (count == 8)
         return true;
      else
         return false;
   }
}

Upvotes: 0

Views: 646

Answers (3)

rai.skumar
rai.skumar

Reputation: 10677

Check out Arrays API of JAVA; it has few very interesting and useful methods. http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html

Upvotes: 0

Johnnie
Johnnie

Reputation: 305

In addition to @I82Much's answer, you declare the buildBoard method but never call it, so when you set clearBoard[0][0]=board[0][1] you are setting it to null (i think).

In your buildBoard method you are re-declaring a new board array that's local in scope.

Upvotes: 0

I82Much
I82Much

Reputation: 27326

The change you make is being overwritten by the draw method.

        clearBoard[row1][col1]='.'; // this will print out the 4 row variable values            

It's not clear to me what you're trying to accomplish in this method, since the comment completely disagrees with the code - you're setting the values to a period, not printing anything out at that line.

There's a lot of style things to improve here as well - a method named draw should not have the side effect of resetting the board.

Upvotes: 1

Related Questions