How can I effectively enhance this code + formating issues
<p>I'm having a few ineffective and formatting issues with a simple tic-tac-toe code. there are many of these on the web, and while this works like those...there are a few problems I face:</p>

<ol>
<li>I would prefer to know if I was player X or O.  </li>
<li>Would rather refer to the rows and columns as 1-3 rather than 0-2</li>
<li>You can take spots already taken, I don't know how I could block it.</li>
<li>Game doesn't and doesn't provide a message if it's a tie</li>
</ol>

<p>Coding so far:</p>

<pre><code>                public class TicTacToeRefactor
            {
            public static void main(String[] args)
               {
                  Scanner in = new Scanner(System.in);
                  int[][] board = new int[3][3];

                  int player = 2;

                  drawBoard(board);
                  while (!win(board, player))
                  {
                     if (player == 1)
                     {
                        player = 2;
                     }
                     else
                     {
                        player = 1;
                     }

                     System.out.println("Player " + player + " choose a row and column.");
                     int row = in.nextInt();
                     int column = in.nextInt();
                     board[row][column] = player;
                     drawBoard(board);
                  }
                  System.out.println("Player " + player + " wins!");

               }





               /**
                  Checks if player has won tic-tac-toe along diagonal lines
                  @param board a 3x3 array containing 0, 1, 2, values indicating
                  blanks or player numbers
                  @param player the player to check for a winning sequence of marks
                  @return true if player won, false otherwise
               */
               public static boolean wonDiagonal(int[][] board, int player)
               {
                  int count = 0;
                  //check one diagonal
                  for (int i = 0; i &lt; 3; i++)
                  {
                     if (board[i][i] == player)
                     {
                        count++;
                     }
                  }
                  if (count == 3)
                  {
                     return true;
                  }
                  else
                  {
                     count = 0;
                  }

                  //check other diagonal
                  for (int i = 0; i &lt; 3; i++)
                  {
                     if (board[i][2 - i] == player)
                     {
                        count++;
                     }
                  }
                  if (count == 3)
                  {
                     return true;
                  }
                  else
                  {
                     return false;
                  }
               }

               /**
                  Checks if player has won tic-tac-toe along straight lines
                  @param board a 3x3 array containing 0, 1, 2, values indicating
                  blanks or player numbers
                  @param player the player to check for a winning sequence of marks
                  @return true if player won, false otherwise
               */
               public static boolean wonStreightLines(int[][] board, int player)
               {
                  for (int i = 0; i &lt; 3; i++)
                  {
                     int count = 0;
                     for (int j = 0; j &lt; 3; j++)
                     {
                        if (board[i][j] == player)
                        {
                           count++;
                        }
                     }
                     if (count == 3)
                     {
                        return true;
                     }
                  }
                  for (int i = 0; i &lt; 3; i++)
                  {
                     int count = 0;
                     for (int j = 0; j &lt; 3; j++)
                     {
                        if (board[j][i] == player)
                        {
                           count++;
                        }
                     }
                     if (count == 3)
                     {
                        return true;
                     }
                  }
                  return false;
               }

               /**
                  Checks if player has won
                  @param board a 3x3 array containing 0, 1, 2, values indicating
                  blanks or player numbers
                  @param player the player to check for a winning sequence of marks
                  @return true if player won, false otherwise
               */
               public static boolean win(int[][] board, int player)
               {
                  if (wonDiagonal(board, player) || wonStreightLines(board, player))
                  {
                     return true;
                  }
                  else
                  {
                     return false;
                  }
               }

               /**
                  Draws gameboard, player 1 is X, player 2 is O
                  @param board the gameboard filled with 0, 1, or 2s
               */
               public static void drawBoard(int[][] board)
               {
                  System.out.println("|-----|");
                  for (int i = 0; i &lt; 3; i++)
                  {
                     for (int j = 0; j &lt; 3; j++)
                     {
                        if (board[i][j] == 1)
                        {
                           System.out.print("|X");
                        }
                        else if (board[i][j] == 2)
                        {
                           System.out.print("|O");
                        }
                        else
                        {
                           System.out.print("| ");
                        }
                     }
                     System.out.println("|\n|-----|");
                  }
               }


            }
</code></pre>

<p>Pretty sure I can just throw in a <code>System.out.println</code> to show which player is which (like which one is going)</p>
