这里是代码:解释代码
基本上,这个代码打印出了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乘然后我添加t。令人困惑的是SUITS(相当于4),乘以i(13),然后加上j(其值为4),根本不等于52.所以请解释一下,这个函数是如何工作的。
Maxmium值
CURRENT_COLUMN
开始是12,'j'为3 SO 4 * 12 + 3 = 51(阵列的第52值)。 – Mics我在C#中编写了类似的代码,只是通过在让你感到困惑的行后面的内部for循环中添加此行,让事情自我解释为Console.WriteLine(“deck [{0}] = {1}”,SUITS * i + j,甲板[SUITS * i + j]); (请将其转换为基于Java的输出为控制台(或命令提示符)...然后尝试了解.. –
你应该访问http://codereview.stackexchange.com/ – zEro