1. Engineering
  2. Computer Science
  3. given the print method below which is used to print...

Question: given the print method below which is used to print...

Question details

Given the print method below which is used to print the ocean with row labels A to J and column labels 0 to 9, at the moment the only way to input coordinates is by entering an integer for the row, followed by a space, followed by another integer for the column. Looking at the additional methods, how can this be changed so I can input a String (from A to J) for rows instead of an integer?

public void print()
{
    String space = " ";
    int rows;
    int columns;
    char rowLabel = 'A';

    for (rows = -1; rows <= 9; rows++)
    {
        for (columns = -1; columns <= 9; columns++)
        {
            if (rows == -1)
            {
                if (columns > -1)
                {
                    space += " " + columns;
                }
            }
            else if (columns == -1)
            {
                space += rowLabel + " ";
                rowLabel++;
            }
            else if (!this.checkIfShipIsHit(rows, columns))
            {
                space += "~" + " ";
            }
            else
            {
                space += shipLocationArray[rows][columns].toString() + " ";
            }
        }

        space += "\n";
    }
    // Print the ocean.
    System.out.println(space);
}


public void play(){
       print(101);
       print(1);
       ocean.placeAllShipsRandomly();
       boolean isGameOver = ocean.isGameOver();
       sc = new Scanner(System.in);
      
       //print the ocean and start the game
       ocean.print();
       print(3);
       while (!isGameOver){
           print(2);
           String input = sc.nextLine();
          
           //check if input is valid
           while (!checkValidInput(input)){
               print(99);
               input = sc.nextLine();
           }
          
           //get coordinates and fire
           int[] coordinates = getCoordinates(input);
           int row = coordinates[0];
           int column = coordinates[1];
           ocean.shootAt(row, column);
           availableSpot[row][column] = false;
           isGameOver = ocean.isGameOver();
           ocean.print();
           print(3);
           print(100);
       }
       //print info saying you win
       print(4);
   }


 public int[] getCoordinates(String input){
       int[] coordinates = new int[2];
       String[] strList = input.split(" ");
       int row = Integer.parseInt(strList[0]);
       int column = Integer.parseInt(strList[1]);
       coordinates[0] = row;
       coordinates[1] = column;
       return coordinates;
   }
Solution by an expert tutor
Blurred Solution
This question has been solved
Subscribe to see this solution