私はここに座って、このコードがどのように実行されるかを理解しようとしています。if ステートメントでブール演算子がどのように機能するかは理解しています (または理解したつもりでした) が、どうやら理解していないようです。コードは次のとおりです。
public class Exercise_6_24 {
public static void main(String[] args) {
final int NUMBER_OF_CARDS = 52;
String[] suits = {"Clubs", "Diamonds", "Hearts", "Spades"};
String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9",
"10", "Jack", "Queen", "King"};
// found indicates whether a suit has been picked
boolean[] found = new boolean[4];
// Count the number of picks
int numberOfPicks = 0;
// Count occurrence in each suit
int count = 0;
while (count < 4) {
numberOfPicks++;
int index = (int)(Math.random() * NUMBER_OF_CARDS);
if (!found[index / 13]) {
found[index / 13] = true;
count++;
String suit = suits[index / 13];
String rank = ranks[index % 13];
System.out.println(rank + " of " + suit);
}
}
System.out.println("Number of picks: " + numberOfPicks);
}
}
これは基本的に、カード ピッキングの問題の 1 つです。私が混乱している部分は、while ループの最初の if ステートメントです。ループの前に、見つかったブール配列のすべてのスロットが false に設定されます。ただし、while ループの if ステートメントは、見つかったブール配列が true に設定されているかどうかをテストしており、true の場合は if ステートメントでコードを実行します。実行されるべきではありませんが、実行されます。そこにブレークポイントを設定すると、ブール配列スロットが false から true に変化して、if ステートメント内のコードが実行されることがわかりました。
私はこれがどのように起こっているのか真剣に理解していません。誰かが私にこれがどのように起こっているのか説明できますか?
ありがとうございました!