gpt4 book ai didi

java - 循环和/或 if else 双返回

转载 作者:行者123 更新时间:2023-12-01 23:10:45 25 4
gpt4 key购买 nike

我正在尝试编写一个程序来玩骰子游戏,用户下注高低或七。到目前为止,我已经成功地掷骰子并添加了正确的部分,但我的投注功能进展不顺利。这是我到目前为止所拥有的:

import java.util.Random;
import java.util.Scanner;

public class Project07
{
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
Random r = new Random();
int money = 100;
int newtotal = 100;
System.out.println("You have " + money + " dollars");
while (money > 0)
{
System.out.println("Enter an amount to be or 0 to quit");
int bet = keyboard.nextInt();
if (bet == 0)
{
System.out.println("You end with " + money + " dollars");
System.exit(0);
}

System.out.println("Bet 1 for high, 2 for low, or 3 for 7's");
int choose = keyboard.nextInt();
int diceb = r.nextInt(7 - 1) + 1;
int dicea = r.nextInt(7 - 1) + 1;
int dicetotal = dicea + diceb;
System.out.println(dicetotal);
System.out.println("You bet $" + bet);
if ((choose == 1) && (dicetotal > 7))
{
newtotal = newtotal + bet;
System.out.println("You win $" + bet);
System.out.print("You have " + newtotal + " dollars left");
}
else if ((choose == 1) && (dicetotal <= 7))
{
newtotal = newtotal - bet;
System.out.println("You have " + newtotal + "dollars left");
}
else if ((choose == 2) && (dicetotal < 7))
{
newtotal = newtotal + bet;
System.out.println("You have " + newtotal + "dollars left");
}
else if ((choose == 2) && (dicetotal >= 7))
{
newtotal = newtotal - bet;
System.out.println("You have " + newtotal + "dollars left");
}
else if ((choose == 3) && (dicetotal == 7))
{
newtotal = newtotal + bet;
System.out.println("You have " + newtotal + "dollars left");
}
else if ((choose == 3) && (dicetotal != 7))
;
{
newtotal = newtotal - bet;
System.out.println("You have " + newtotal + "dollars left");
}
}
}
}

我得到的输出应该是这样的:你有 100 美元输入金额或 0 退出20投注 1 表示高,投注 2 表示低,或投注 3 表示 7111您下注 20 美元您赢得 20 美元您还剩 120 美元输入金额或 0 退出0你最终得到 120 美元

然而,它似乎激活了 if else block 的获胜和失败部分,并给我这个:你有 100 美元输入金额或 0 退出20投注 1 表示高,投注 2 表示低,或投注 3 表示 7111您下注 20 美元您赢得 20 美元您还剩 120 美元 您还剩 100 美元输入金额或 0 退出0你最终得到 100 美元

不太确定我的问题出在哪里,也许我需要专门为它的下注功能编写一个新方法?任何帮助将不胜感激。

最佳答案

格式正确(两种主要样式之一):

public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
Random r = new Random();
int money = 100;
int newtotal = 100;
System.out.println("You have " + money + " dollars");
while (money > 0) {
System.out.println("Enter an amount to be or 0 to quit");
int bet = keyboard.nextInt();
if (bet == 0) {
System.out.println("You end with " + money +" dollars");
System.exit(0);
}
System.out.println("Bet 1 for high, 2 for low, or 3 for 7's");
int choose = keyboard.nextInt();
int diceb = r.nextInt(7 - 1) + 1;
int dicea = r.nextInt(7 - 1) + 1;
int dicetotal = dicea + diceb;
System.out.println(dicetotal);
System.out.println("You bet $" + bet);
if ((choose == 1) && (dicetotal >7)) {
newtotal= newtotal + bet;
System.out.println("You win $" + bet);
System.out.print("You have " + newtotal +" dollars left");
}
else if ((choose == 1) && (dicetotal <= 7)) {
newtotal = newtotal - bet;
System.out.println("You have " + newtotal + "dollars left");
}
else if ((choose == 2) && (dicetotal < 7)) {
newtotal = newtotal + bet;
System.out.println("You have " + newtotal + "dollars left");
}
else if ((choose == 2) && (dicetotal >= 7)) {
newtotal = newtotal - bet;
System.out.println("You have " + newtotal + "dollars left");
}
else if ((choose == 3) && (dicetotal == 7)) {
newtotal = newtotal + bet;
System.out.println("You have " + newtotal + "dollars left");
}
else if ((choose == 3) && (dicetotal != 7)); { <<== Wayward semicolon!!
newtotal = newtotal - bet;
System.out.println("You have " + newtotal + "dollars left");
}
}
}

任性的分号是显而易见的,因为除了行尾之外,你永远不会在任何地方放置分号。浏览代码并查看 if 条件很容易 - 您不必将它们从困惑中挖掘出来。从缩进可以明显看出 while 结束的位置。

(另一种主要样式是将 { 字符放在自己的行上:

        ...
}
else if ((choose == 1) && (dicetotal <= 7))
{
newtotal = newtotal - bet;
System.out.println("You have " + newtotal + "dollars left");
}
else if ((choose == 2) && (dicetotal < 7))
{
newtotal = newtotal + bet;
System.out.println("You have " + newtotal + "dollars left");
}
...

我不太喜欢这种风格,因为它过多地分散了文本(并且在尝试阅读和理解大型程序时屏幕空间很有值(value)),而且因为任性的 ; 情况下,; 不合适的情况并不那么明显。)

(还有一种样式将结束 } 与以下 else 放在同一行:

        ...
} else if ((choose == 1) && (dicetotal <= 7)) {
newtotal = newtotal - bet;
System.out.println("You have " + newtotal + "dollars left");
} else if ((choose == 2) && (dicetotal < 7)) {
...

这更紧凑,但在我看来太紧凑了,并且开始变得困惑。另外,它使得不可能在 else 之前放置注释行。但其他人有不同的偏好。主要选择一种风格并坚持下去,并在团队中尝试同意一个共同的方案(不要对此感到压抑)。

关于java - 循环和/或 if else 双返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22049467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com