【问题标题】:How can I fix this if statement in my blackjack bust system?如何在我的二十一点破产系统中修复此 if 语句?
【发布时间】:2020-11-08 15:20:42
【问题描述】:

我是编码和学校作业的新手。我正在用 Java 编写二十一点。这可能是一个简单的解决方法,但我的代码就是这样做的


经销商总数为7

你的总数是 11

你想要另一张卡片吗? 是/否 是的


你的总数是 20 你想要另一张卡吗? 是/否 是的


你的总数是 26 你想要另一张卡吗? 是/否 是的


你的总数是 26 你破产了 您现在有 $400.0 你想再玩一次吗?是/否

.

问题是它高于 21,但直到下一个循环才告诉你你破产了。我希望它只说最后一个,而不是倒数第二个和最后一个。

System.out.println("would you like another card? \ny/n");
answer = sanswer.nextLine();

//if player answers
while ("y".equals(answer)) {
    if (total < 21){
        hit = (int) Math.floor(Math. random() * 10) + 1;
        total += hit;
        System.out.println("____________________________\n");
        System.out.println("Your total is " + total);
        System.out.println("Would you like another card? \ny/n");
        answer = sanswer.nextLine();
    }  
    //player bust
    if (total > 21) {
        System.out.println("______________");
        System.out.println("Your total is " + total);
        System.out.println("You went bust");     
        System.out.println("You now have $" + money);
        play = "no";
        System.out.println("Would you like to play again? y/n");
        answer = "";
        play = srplay.next();
    }
}

【问题讨论】:

  • 您指的是 Java(不是 JavaScript)吗?提供的代码是用 Java 编写的。
  • 是的,我做错了
  • 鉴于当您开始 while 循环时,玩家已经承诺命中,也许在检查之前添加命中会有所帮助。
  • 我建议您在while ("y".equals(answer)) { 行之后打印total 的值。我想它会帮助你理解。

标签: java loops if-statement while-loop blackjack


【解决方案1】:

考虑一下这个地方:

total += hit;

此时总数可能超过 21。请检查此。根据价值行事:

if (total > 21) { /* do something here */ }

【讨论】:

    猜你喜欢
    • 2018-06-25
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 2013-10-01
    • 2019-02-26
    • 1970-01-01
    相关资源
    最近更新 更多