我已经浏览了这个网站和其他网站,试图用我老师提供给我的知识来计算如何做到这一点。
基本上该程序应该是一个用户输入系统,你可以在头上或尾巴硬币翻转游戏上下注。
到目前为止,我还没有运气。不要求别人为我完成它,而是要帮助我朝着正确的方向前进。
提前谢谢。
到目前为止,这是我的代码:
package Homework6;
import java.util.Scanner;
import java.lang.Math;
public class CoinFlip {
public static void main(String[]args){
Scanner input = new Scanner(System.in);
int money = 10;
double flip = Math.random();
String heads = "heads";
String tails = "tails";
int bet = input.nextInt();
while(bet < 0 || bet > money){
if(true){
System.out.println("How much do you want to bet?");
input.next();
}
}
System.out.println("Guess if the coin will be heads or tails.");
String guess = input.next();
String coin;
if (flip <0.5) coin = heads;
else coin = tails;
if(guess == coin){
int correct = money + bet;
System.out.println("The flip was"+ coin);
System.out.println("You win" + bet);
System.out.println("")
}
}
}
答案 0 :(得分:1)
修复可能的无限循环:
do{
System.out.println("How much do you want to bet?");
bet = input.nextInt();
}
while(bet > 0 && bet > money);
您可以删除if
语句,因为它不是真正需要的。但是,您需要声明变量bet
以具有正确的范围。
if(guess.equals(coin)) // proper way of checking Strings
使用此表格检查猜测值与硬币的值。
答案 1 :(得分:0)
给你一些笔记(因为你刚开始并且仍然是学生):
1)你的while循环构造有点差。系统输出将不断打印到屏幕,直到有一些输入。并且if语句基本上不进行条件检查。这总是如此。
2)你最初从未提示用户想要下注多少。您只是在输入值后才提示他们。因此,当您最初点击播放时,控制台只是空白。但实际上它正在等待一些意见。
3)你改变硬币状态的if语句有点无关紧要。
4)用户的金额从未实际更新,最后的输出可能会提供更多信息。
5)如果有人赢得第一个并想再次参加比赛怎么办?他们可能想让这家银行继续发展!因此,您可以包含do / while中的所有内容,而bank和gt; 0
6)在比较基元类型时,您应该只使用==
运算符。几乎所有其他时间,请使用Object.equals(object);
我知道你没有要求别人为你完成它,但这个网站最好通过共享信息。下面应该对你有用,我已经广泛评论过了。希望这可以教授除了这项家庭作业之外的一些事情。
public static void main(String[] args)
{
// Setup some initial variables
int bank = 10;
double flip = Math.random();
// Instantiate a new Scanner object
Scanner input = new Scanner(System.in);
// Let the user bet until they run out of money in the bank
do
{
// Ask the user how much money to wager
System.out.println("How much do you want to bet?");
int bet = input.nextInt();
// The bet was invalid
while(bet < 0 || bet > bank)
{
System.out.println("Invalid bet (" + bet + "). Minimum bet = 0. Maximum bet = " + bank);
bet = input.nextInt();
}
// Ask the user for which side
System.out.println("Heads or tails?");
String guess = input.next();
// The coin is either heads or tails, so it can always start as tails. If the value goes under .5, change it to heads. If not, it remains the same, "tails".
String coin = "tails";
if (flip < 0.5)
{
coin = "heads";
}
// Tell the user the result, regardless of win or lose
System.out.println("The flip was " + coin);
// Update the user's bank and inform them of the new value
if(guess.equalsIgnoreCase(coin)) // this allows for any form of HeaDs or TaILs
{
bank += bet;
System.out.println("You win " + bet);
System.out.println("Your bank contains " + bank);
}
else
{
bank -= bet;
System.out.println("You lose " + bet);
System.out.println("Your bank contains " + bank);
}
}
while(bank > 0);
// Goodbye message
System.out.println("Thanks for playing!");
// Don't forget to close your Scanner object!
input.close();
}
答案 2 :(得分:0)
好吧,既然你有这么多麻烦,我会说明我是如何做到的。
你需要一些变量,我在下面使用了这些变量,取自你的代码。
Scanner input = new Scanner(System.in);
int money = 10;
String heads = "heads";
String tails = "tails";
int bet = 0;
String guess;
String coin;
然后你需要一个循环。你已经有一个while
循环了,那样做了,但是我看到你的条件不正确。您正在测试bet < 0 || bet > money
,我将其视为 “如果您投注的金额少于没有钱或者下注更多的钱,请进入此循环” 我相信您想要的与此相反。如果你没钱,我还补充说。
while(bet > 0 || bet < money || money <= 0)
现在循环内部。在这里,你想按照一定的顺序做几件事。
flip
是heads
还是tails
,但我删除了flip
变量,并使用{{1}直接。Math.random() < 0.5
添加到bet
并显示某种消息。然后你的程序将重新开始。