在简单的2D阵列游戏中选择随机起点

时间:2018-12-16 21:12:53

标签: java arrays

创建7x7多维数组。

  • 在数组单元FillBoard(int [] []):void

  • 中的[1,100]之间放置随机数
  • 选择一个随机的行和列来开始游戏(不能是一堵墙)。

  • 创建一个名为“ PrintBoard(int [] [],int x,int y):void”的方法,该方法可以打印电路板。用管道将当前单元格包围起来: “ | 64 |”

所以这是我的测验任务,但我坚持使用粗体部分。 你能帮我吗?

这是我的代码

import java.util.Random;

public class Answer2 {

    public static void main(String[] args) {

        int board[][] = fillBoard(7, 7);
        Random start = new Random();
        int startX = start.nextInt(7);
        int startY = start.nextInt(7);
        System.out.println("StartX: " + startX + " StartY: " + startY );
        System.out.println();
        System.out.println("----Initial Board----");
        System.out.println();
        printBoard(board,startX,startY);

    }


    public static int [][] fillBoard (int row, int column){
        int [][] array = new int [row][column];
        Random rnd = new Random();
        for(int i= 0; i < array.length; i++) {
            for(int j = 0; j < array[i].length; j++) {
                array[i][j] = rnd.nextInt(100)+1;
            }
        }

        return array;
    }

    public static void printBoard(int [][] array, int x, int y) {
        Random st = new Random();
        x = st.nextInt(7);
        y = st.nextInt(7);
        for(int i = 0; i < array.length; i++) {
            for(int j = 0; j < array[i].length; j++) {
                System.out.print(array[i][j] + "\t");

            }
            System.out.println();
        }
    }

}

2 个答案:

答案 0 :(得分:1)

据此,我想您被困在打印单元管道

  

创建一个名为“ PrintBoard(int [] [],int x,int y):void”的方法,该方法   打印板。用管道将当前单元格包围起来: “ | 64 |”

在这种情况下,将您的方法更改为以下一种:

public static void printBoard(int[][] array, int x, int y) {
    Random st = new Random();
    x = st.nextInt(7);
    y = st.nextInt(7);
    for (int i = 0; i < array.length; i++) {
      for (int j = 0; j < array[i].length; j++) {
        System.out.print("|" + array[i][j] + "|" + "\t");
      }
      System.out.println();
    }
  }

输出:

StartX: 5 StartY: 6

----Initial Board----

|74|    |95|    |31|    |12|    |26|    |3| |3| 
|87|    |59|    |84|    |73|    |67|    |44|    |47|    
|35|    |71|    |55|    |44|    |10|    |75|    |60|    
|68|    |49|    |85|    |43|    |87|    |31|    |33|    
|30|    |97|    |45|    |82|    |60|    |25|    |68|    
|28|    |32|    |88|    |83|    |82|    |34|    |21|    
|6| |20|    |5| |85|    |67|    |75|    |53|    

答案 1 :(得分:1)

  1. 在将xy作为参数时,请不要在方法中更改其值
  2. x,y与索引i,j进行比较,以了解将管道放置在何处
  3. 为了获得良好的对齐效果(由于1位数字和2位数字),我建议使用printf("%2d, value);
public static void printBoard(int[][] array, int x, int y) {
    for (int i = 0; i < array.length; i++) {
        for (int j = 0; j < array[i].length; j++) {
            if (i == x && j == y) {
                System.out.printf("|%2d|\t", array[i][j]);
            } else {
                System.out.printf(" %2d \t", array[i][j]);
            }
        }
        System.out.println();
    }
}