如何在另一种方法中使用扫描仪的结果?

时间:2015-07-30 07:13:52

标签: java

我正在进行PvP战舰游戏,我有方法: 1)initPlayerShips 2)showPlayerBoard

我有一台扫描仪可以注册船只将被放置在哪里的用户输入" initPlayerShips"。如何使用来自" initPlayerShips"的扫描仪结果?并将它们放在" showPlayerBoard"?

我现在所拥有的:

public static void initPlayerShips(int[][]Playerships, int[][] playerBoard){
Scanner input = new Scanner(System.in);

for(int shipCount=0;shipCount<10; shipCount++){
System.out.println("Row: ");
int rowCoordinate = input.nextInt();
System.out.println("Column: ");
int columnCoordinate = input.nextInt();
playerBoard[rowCoordinate-1][columnCoordinate-1]='S';
}
System.out.println(playerBoard);
}

public static void showPlayerBoard(int[][] playerBoard){
    Scanner input = new Scanner(System.in);
    System.out.println("\t1 \t2 \t3 \t4 \t5 \t6 \t7 \t8 \t9 \t10");
    System.out.println();

    for(int row=0 ; row < 10 ; row++ ){
        System.out.print((row+1)+"");
        for(int column=0 ; column < 10 ; column++ ){
            if(playerBoard[row][column]==-1){
                System.out.print("\t"+"~");
            }else if(playerBoard[row][column]==0){
                System.out.print("\t"+"*");
            }else if(playerBoard[row][column]==1){
                System.out.print("\t"+"X");
            }

        }
        System.out.println();
    }// for
}

1 个答案:

答案 0 :(得分:0)

将值作为参数传递或使用setter / getter。
你有两个选择。
a)传递参数:如果在输入之后,您将从方法重定向到要显示获取输入值的方法,然后在调用方法时简单地传递参数。
例如:

for(int shipCount=0;shipCount<10; shipCount++){
System.out.println("Row: ");
int rowCoordinate = input.nextInt();
System.out.println("Column: ");
int columnCoordinate = input.nextInt();
playerBoard[rowCoordinate-1][columnCoordinate-1]='S';
}
// System.out.println(playerBoard);
// Pass your parameter to show
showPlayerBoard(playerBoard)
}


b)您设置适合使用的值。然后只需获取要显示的值。如果您想在以后使用值(不是在当前方法之后/之后),这非常适用 例:

private int[][] playerBoard;

public void setPlayerBoard(int[][] playerBoard){
  this.playerBoard = playerBoard;
}

public int[][] getPlayerBoard(){
   return this.getPlayerBoard;
}

public static void initPlayerShips(int[][]Playerships, int[][] playerBoard){
Scanner input = new Scanner(System.in);

for(int shipCount=0;shipCount<10; shipCount++){
System.out.println("Row: ");
int rowCoordinate = input.nextInt();
System.out.println("Column: ");
int columnCoordinate = input.nextInt();
playerBoard[rowCoordinate-1][columnCoordinate-1]='S';
}
//System.out.println(playerBoard);
}

public static void showPlayerBoard(){
    Scanner input = new Scanner(System.in);
    System.out.println("\t1 \t2 \t3 \t4 \t5 \t6 \t7 \t8 \t9 \t10");

    int[][] playerBoard = getPlayerBoard();
    for(int row=0 ; row < 10 ; row++ ){
        System.out.print((row+1)+"");
        for(int column=0 ; column < 10 ; column++ ){
            if(playerBoard[row][column]==-1){
                System.out.print("\t"+"~");
            }else if(playerBoard[row][column]==0){
                System.out.print("\t"+"*");
            }else if(playerBoard[row][column]==1){
                System.out.print("\t"+"X");
            }

        }
        System.out.println();
    }// for
}