有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java选择一个随机起点的简单2d数组游戏

创建一个7x7多维数组

  • 在数组单元格填充板内[1100]之间放置随机数(int[][]):void

  • 选择一个随机的行和列开始游戏(不应该是墙)

  • 创建一个名为“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) 个答案

  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();
        }
    }
    
  2. # 2 楼答案

    从这一点来看,我猜你一定是被困在打印细胞管道

    Create a method called “PrintBoard(int[][], int x, int y): void” that prints the board. Surround the current cell with pipes: E.g. “|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|