我的代码存在问题,在Black Jack游戏中计算手总数的整数。由于某种原因,for循环第一次迭代两次,这意味着它在递增i之前在循环中使用i = 0两次。这有什么原因吗?我不知道该改变什么。
private void setTotal(){
boolean ace = false;
for (int i = 0; i<hand.size(); i++){
if((hand.get(i).getValue()) == 1){
handTotal += 1;
ace = true;
}
else if((hand.get(i).getValue()) > 10){
handTotal += 10;
}
else {
handTotal += (hand.get(i).getValue());
}
}
if(ace == true && handTotal<12){
handTotal += 10;
}
}
下面是我用来检查它的一堆打印语句的代码。
private void setTotal(){
boolean ace = false;
for (int i = 0; i<hand.size(); i++){
System.out.println("start " + i);
if((hand.get(i).getValue()) == 1){
handTotal += 1;
ace = true;
System.out.println("ace one");
}
else if((hand.get(i).getValue()) > 10){
handTotal += 10;
System.out.println("face card");
}
else {
handTotal += (hand.get(i).getValue());
System.out.println("num");
}
System.out.println("end " + i);
}
if(ace == true && handTotal<12){
handTotal += 10;
System.out.println("ace plus");
}
}
主要是我运行
public class BlackJack {
public static void main(String[] args){
Deck deck = new Deck();
Dealer dealer = new Dealer();
deck.shuffle();
for(int i =0; i<2; i++){
dealer.dealCard(deck.draw());
}
System.out.println(dealer.getHand());
System.out.println(dealer.getHand().size());
System.out.println(dealer.getTotal());
}
}
例如它打印出来 从0开始 NUM 结束0 从0开始 NUM 结束0 开始1 NUM 结束1 [7个俱乐部,4个俱乐部] 2 18
答案 0 :(得分:2)
我希望for-each
循环实现setTotal
(并且不要忘记将handTotal
重置为零),如
private void setTotal() {
handTotal = 0;
boolean ace = false;
for (Card c : hand) {
int value = c.getValue();
if (value == 1) {
ace = true;
}
handTotal += (value > 10) ? 10 : value;
}
if (ace && handTotal < 12) {
handTotal += 10;
}
}