[英]How do I use the results of a Scanner in another method?
我正在制作 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
}
将值作为参数传递或使用 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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.