gpt4 book ai didi

Java 硬币翻转程序

转载 作者:行者123 更新时间:2023-12-01 09:29:59 25 4
gpt4 key购买 nike

我正在尝试编写一个简单的硬币翻转程序,想知道是否可以获得一些帮助。我对 Java 相当陌生,只是想问用户他们想掷硬币多少次。这是我的代码:

package cointossing;
import java.util.Random;
import java.util.Scanner;
import static java.lang.System.in;
import static java.lang.System.out;
/**
* Coin tossing class to simulate the flip of a coin
* with two sides; Heads and Tails.
*
* @author Alex Chapman ID:
*
*/
public class CoinTossing
{
public static String sideUp;
public static int number;

public void run()
{
try( Scanner input = new Scanner(in) )
{
out.print("Enter how many times you would like to flip the coin");
out.print("if you enter 0 the program quits");
int number = input.nextInt();
}
}


private static void coin()
{
Random rand = new Random();
int sideup = rand.nextInt(2);
if (sideup == 0)
{
sideUp = "heads";
}
else
{
sideUp = "tails";
}
}

public static String getsideup()
{
out.println(sideUp);
return sideUp;
}



public static void main(String[] args)
{
int hcount = 0;
int tcount = 0;
for (int i = 1; i <= number; i++)
{
coin();
if (getsideup().equals("heads"))
{
hcount++;
}
else
{
tcount++;
}
}
out.println("total heads = " + hcount + " total tails = " + tcount);
}
}

但是当我运行该程序时,它会跳过询问用户任何内容,只显示 0,因为没有翻转硬币的次数...我感觉我走在正确的轨道上,但我卡住了...任何帮助将不胜感激..

编辑:

因此,为了学习,我决定更改我的程序,将硬币更改为枚举,并让程序返回该枚举值..我还将用户输入更改为菜单样式,但这通过以下操作得到了帮助在我不久前购买的 Barnes and Nobles 书中...我想我已经走到了一个奇怪的十字路口...我想基本上将这两个程序融合在一起,以便所有新工作都返回枚举值这样的内容仍然存在,但删除了“菜单”方面,并将其替换为用户输入他们想要从之前的程序中进行多少次翻转的功能。这是我编写的新程序:

import java.util.*;

public class CoinTossing
{
private enum Coin { HEADS, TAILS };

private static final Random randomNumbers = new Random();

private static final int HEAD = 1;
private static final int TAIL = 2;

public static void main(String[] args)
{
Scanner input = new Scanner( System.in );

int choice;
int toss = 0;
int tosses = 0;
int frontflip = 0;
int backflip = 0;

Coin gameStatus;

System.out.println("Welcome to the Coin Toss Program.\n");
System.out.println("Choose from the menu what you want to do.");
System.out.print("1. Toss the coin\n2. Quit program\n");
choice = input.nextInt();

while ( choice != 0 )
{
if ( choice == 1 )
{
int CoinTossed = Flip();

switch ( CoinTossed )
{
//added tosses to switch statement to make the counter work perfect.
case HEAD:
gameStatus = Coin.HEADS;
tosses++; // add amount of tosses
break;
default: // changed case TAIL to default. Easy and works.
gameStatus = Coin.TAILS;
tosses++; // add amount of tosses
break;
}

if ( gameStatus == Coin.HEADS )
{
frontflip++; //Add amount of heads
}
else // gameStatus == TAILS
backflip++; //Add amount of tails
}

// A try to make an real exit out of a program

if ( choice == 2 )
{
EndProgram( frontflip, backflip, tosses );
}

System.out.println("\nChoose from the menu what you want to do.");
System.out.print("1. Toss the coin\n2. Quit program\n");
choice = input.nextInt();
}
}

//Toss the coin to determine 1 or 2.
public static int Flip()
{
int toss;

toss = 1 + randomNumbers.nextInt( 2 );

if ( toss == 1 )
{
System.out.println("You toss the coin and it lands on head!");
}
else
{
System.out.println("You toss the coin and it lands on tail!");
}
return toss;
}

public static void EndProgram( int frontflip, int backflip, int tosses )
{
System.out.printf("You have tossed %d times.\n", tosses);
System.out.printf("Of all those tosses, %d landed on heads, and %d on tails.\n", frontflip, backflip);
System.exit(0);
}
}

我正在考虑创建一个新变量并让用户设置抛掷次数。然后像这样复合 while 循环检查

while(choice != 0 && numTosses !=0)

然后减少计数,我必须检查该计数,一旦达到 0 就打印出有多少个正面和多少个反面的结果,然后提示用户是否想再次玩游戏..老实说我什至不知道为什么我要尝试这样做,如果不是为了知识方面,所以如果你不想帮助布罗斯基,我理解。

最佳答案

您没有在 main 中调用 run() 。

您需要添加run()在您的for (int i = 1; i <= number; i++)之前打电话。

您还需要再次检查您的变量,看起来您正在使用 sideUp作为 int 和作为字符串。尝试添加this.sideUp当您设置值 "heads" 时,在 coin() 调用中和"tails" ,或重命名您的int sideUp变量以避免混淆。

关于Java 硬币翻转程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39520725/

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