どのように私は非反復数字で2次元配列のテーブルを生成していますか?

user10947891:

どのように私はすべての要素が異なると4X4 2Dアレイテーブルを生成する必要がありますか?

ここに私のコードは次のとおりです。

public class Game {
public static void main(String[] args) {
    int gameboard[][] = new int[4][4];
    for (int row=0; row < gameboard.length; row++) {
        for (int col=0; col < gameboard[row].length; col++) {
            gameboard[row][col] = ((int)(1+Math.random() * 16));
            System.out.printf("%-4d",gameboard[row][col]);
        }
        System.out.println();
        }
      }

}
ニコラスK:

解決策1:

public static void main(String[] s1) throws Exception {
    int gameboard[][] = new int[4][4];
    Set<Integer> mySet = new HashSet<>();

    for (int row = 0; row < gameboard.length; row++) {
        for (int col = 0; col < gameboard[row].length; col++) {
            int randNum = (int) (1 + Math.random() * 16);

            while (mySet.contains(randNum)) {
                randNum = (int) (1 + Math.random() * 16);
            }
            mySet.add(randNum);

            gameboard[row][col] = randNum;
            System.out.printf("%-4d", gameboard[row][col]);
        }
        System.out.println();
    }
}

生成された乱数が中に存在する場合、ここでは各反復で、私たちはチェックセット我々がセットに存在しない別の乱数を取得するまで、それが我々のループが存在する場合。


解決策2:

List<Integer> myList = IntStream.range(1, 17).boxed().collect(Collectors.toList());
Collections.shuffle(myList);

for (int row = 0; row < gameboard.length; row++) {
    for (int col = 0; col < gameboard[row].length; col++) {
        gameboard[row][col] = myList.get(row * gameboard.length + col);
        System.out.printf("%-4d", gameboard[row][col]);
    }
    System.out.println();
}

ここでは、番号のリストを生成して使用してそれをシャッフルCollections.shuffleを() 今、私たちは、多次元配列を反復処理し、配列にリストの値を割り当てます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=219781&siteId=1
おすすめ