【发布时间】:2014-02-27 03:03:56
【问题描述】:
我正在尝试编写一个程序来玩骰子游戏,用户下注高低或七。到目前为止,我已经成功地掷骰子并添加了正确的部分,但我的投注功能并不顺利。这是我目前所拥有的:
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 下 7 1 11 你赌20美元 你赢了 20 美元 你还剩 120 美元 输入金额或 0 退出 0 你最终得到 120 美元
但是,它似乎激活了 if else 块的输赢部分,并给我这个:你有 100 美元 输入金额或 0 退出 20 1 下注高,2 下注,或 3 下 7 1 11 你赌20美元 你赢了 20 美元 你还有 120 美元你还有 100 美元 输入金额或 0 退出 0 你以 100 美元结束
不太清楚我的问题出在哪里,也许我需要专门为它的下注功能编写一个新方法?任何帮助将不胜感激。
【问题讨论】:
-
请正常格式化您的 if 语句。
-
在最后一个
if else条件中有一个;,这意味着最后一个预期的if else条件将始终运行。最后还要关闭您的扫描仪对象以防止内存泄漏。 -
遵循某种格式约定将帮助您发现这样的简单错误。
-
您拥有的编辑器几乎可以肯定有某种选项可以自动格式化源代码。用它。将代码放在一起不是“高效”——它会导致各种错误。
-
谢谢各位 抱歉我的代码乱七八糟 我刚开始做这个编程的东西,所以我不太确定标准格式应该是什么样子。
标签: java if-statement while-loop