コードは次のとおりです。
基本的に、このコードはスーツ + ランクの 52 枚のカードを出力します。
package javaapplication52;
public class JavaApplication52 {
public static void deck() {
String[] suit = { "Clubs", "Diamonds", "Hearts", "Spades" };
String[] rank = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack",
"Queen", "King", "Ace" };
// avoid hardwired constants
int SUITS = suit.length;
int RANKS = rank.length;
int N = SUITS * RANKS;
// initialize deck
String[] deck = new String[N];
for (int i = 0; i < RANKS; i++) {
for (int j = 0; j < SUITS; j++) {
deck[SUITS * i + j] = rank[i] + " of " + suit[j];
}
}
// shuffle
for (int i = 0; i < N; i++) {
int r = i + (int) (Math.random() * (N - i));
String t = deck[r];
deck[r] = deck[i];
deck[i] = t;
}
// print shuffled deck
for (int i = 0; i < N; i++) {
System.out.println(deck[i]);
}
}
public static void main(String[] arg) {
JavaApplication52 d = new JavaApplication52();
d.deck();
}
}
私には意味のわからなかったコード
deck[SUITS * i + j] = rank[i] + " of " + suit[j]
私が理解していなかったのは、なぜ彼らはSUITSを掛けてからjを足したのかということでした。混乱していたのは SUITS (これは 4 に等しい) で、i (これは 13 です) を乗算し、次に j ( ( 値は 4 です) を足しました) は 52 とはまったく等しくありません。この関数がどのように機能したかを説明してください。