簡體   English   中英

如何將字符串數字隨機插入數組中

[英]How to randomly insert String numbers into an array-Java

我這里有一個采用strings值的數組,這是我的Puzzle Board View ,現在一切正常,但是數組經過硬編碼,我需要從0-4隨機生成字符串。 我試圖獲得一個random char並把它作為string但這沒有用。 任何提示將是很好。

Random rand = new Random();
char c = (char)(rand.nextInt(5) + '0');
StringBuilder sb = new StringBuilder();
sb.append(c);

String[] debug_board_state  = new String[7];
debug_board_state[0] = "0,3,0,0,3,0,2";
debug_board_state[1] = "1,0,2,0,0,1,2";
debug_board_state[2] = "0,2,0,0,0,0,0";
debug_board_state[3] = "0,0,3,0,3,0,4";
debug_board_state[4] = "2,0,0,0,0,1,0";
debug_board_state[5] = "0,1,0,0,1,0,2";
debug_board_state[6] = "2,0,3,0,0,2,0"; 

UPDATE。

多虧了用戶的回答,盡管我遇到了另一個問題,但我還是能夠得到隨機矩陣,但是我需要對矩陣做更多的事情,所以我不想將其打印出來。 這是代碼

static private final int WIDTH_EASY = 7;
 protected void InitializeEasy() {
      Random rand = new Random();

      String[][] debug_board_state  = new String[7][7];
      for (int row = 0; row < debug_board_state.length; row++) {
          for (int column = 0; column < debug_board_state[row].length; column++) {
              debug_board_state[row][column] = String.valueOf(rand.nextInt(5));
          }
      }

      for (int row = 0; row < debug_board_state.length; row++) {
          for (int column = 0; column < debug_board_state[row].length; column++) {
              System.out.print(debug_board_state[row][column] + " ");
          }
      };

    for (int i = 0; i < WIDTH_EASY; ++i) {
      StringTokenizer tokenizer = new StringTokenizer (debug_board_state[i][i], ",");
      int column = 0;
      while(tokenizer.hasMoreTokens()) {
    String token = tokenizer.nextToken();
    getCurrentState().board_elements[i][column] = new BoardElement();
    getCurrentState().board_elements[i][column].max_connecting_bridges = Integer.parseInt(token);
    getCurrentState().board_elements[i][column].row = i;
    getCurrentState().board_elements[i][column].col = column;

    if (getCurrentState().board_elements[i][column].max_connecting_bridges > 0) {
      getCurrentState().board_elements[i][column].is_island = true;
    }
    ++column;
      }
    }
  }

字符串Tokenizer適用於1d數組,但不適用於2d,我需要做一些與StringTokenizer相同的事情並將其應用於矩陣。 我收到以下錯誤

java.lang.NullPointerException: Attempt to read from field Island_and_Bridges.Hashi.BoardElement[][] Island_and_Bridges.Hashi.BoardState$State.board_elements on a null object reference

盡管我認為int[][]是一個更好的主意,但這是String[][]解決方案。 您可以使用String.valueOf(rand.nextInt(5))在矩陣中生成元素:

import java.util.Random;

public class Main {

    public static void main(String[] args) {
        Random rand = new Random();

        String[][] matrix  = new String[7][7];
        for (int row = 0; row < matrix.length; row++) {
            for (int column = 0; column < matrix[row].length; column++) {
                matrix[row][column] = String.valueOf(rand.nextInt(5));
            }
        }

        for (int row = 0; row < matrix.length; row++) {
            for (int column = 0; column < matrix[row].length; column++) {
                System.out.print(matrix[row][column] + " ");
            }
            System.out.println();
        }
    }
}

更新:

for (int row = 0; row < WIDTH_EASY; ++row) {
    for (int column = 0; column < WIDTH_EASY; ++column) {
        getCurrentState().board_elements[row][column] = new BoardElement();
        getCurrentState().board_elements[row][column].max_connecting_bridges = Integer.parseInt(debug_board_state[row][column]);
        getCurrentState().board_elements[row][column].row = row;
        getCurrentState().board_elements[row][column].col = column;
        if (getCurrentState().board_elements[row][column].max_connecting_bridges > 0) {
            getCurrentState().board_elements[row][column].is_island = true;
        }
    }
}

像這樣嗎

偽代碼:

String[][] debug_board_state  = new String[7][7];

for (int x = 0; x < debug_board_state.size(); x++) {
     for (int y = 0; y < debug_board_state[x].size(); y++) {
         debug_board_state[x][y] = new_random_character();
     }
}

0-4在ASCII刻度上從49到52:

Random rand = new Random();
char c = (char)(rand.nextInt(4)+49);
StringBuilder sb = new StringBuilder();
sb.append(c+'0');

也許您想要這樣的東西:

public void initBoard() {
    Random random = new Random();
    String[][] board = new String[7][7];
    for (int i=0; i < board.size(); i++) {
        for (int j=0; j < board[].size(); j++) {
            board[i][j] = String.valueOf(random.nextInt() % 5);
        }
    }
}

它將使用隨機數的String初始化您的電路板。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM