java掷硬币模拟器问题
嗨,我正在为java做一个掷硬币模拟器,它必须以某种方式完成。它必须有一个用于sideup的字符串来保存由无参数构造函数生成的“正面”或“反面”字符串,toss方法必须无效,并且必须有一个getsideup方法,然后我们必须运行抛硬币20次,并显示正面和反面的数量。。。我可以用none-void方法简单地完成它,只返回结果,但是绕过这个void和getsideup让我抓狂。 这就是我目前所拥有的java掷硬币模拟器问题,java,computer-science,Java,Computer Science,嗨,我正在为java做一个掷硬币模拟器,它必须以某种方式完成。它必须有一个用于sideup的字符串来保存由无参数构造函数生成的“正面”或“反面”字符串,toss方法必须无效,并且必须有一个getsideup方法,然后我们必须运行抛硬币20次,并显示正面和反面的数量。。。我可以用none-void方法简单地完成它,只返回结果,但是绕过这个void和getsideup让我抓狂。 这就是我目前所拥有的 import java.util.Random; public class coin { p
import java.util.Random;
public class coin {
public static String sideUp;
public static void toss() {
Random rand = new Random();
int sideup = rand.nextInt(2);
if (sideup == 0) {
sideUp = "heads";
} else {
sideUp = "tails";
}
}
public static String getsideup() {
System.out.println(sideUp);
return sideUp;
}
public static void main(String[] args) {
// coin coin = new coin();
int hcount = 0;
int tcount = 0;
for (int i = 1; i <= 20; i++) {
if (getsideup().equals("heads")) {
hcount++;
} else {
tcount++;
}
}
System.out.println("total heads = " + hcount + " total tails = " + tcount);
}
}
import java.util.Random;
公共级硬币{
公共静态字符串sideUp;
公共静态void toss(){
Random rand=新的Random();
int sideup=rand.nextInt(2);
如果(sideup==0){
sideUp=“头”;
}否则{
sideUp=“tails”;
}
}
公共静态字符串getsideup(){
系统输出打印项次(sideUp);
返回sideUp;
}
公共静态void main(字符串[]args){
//硬币=新硬币();
int hcount=0;
int t计数=0;
for(int i=1;ifor(int i=1;i在循环开始时没有调用toss()。这需要将值设置为sideUp,并需要放弃sideUp来更改每个toss。import java.util.Random;
import java.util.Random;
public class coin
{
public static String sideUp;
public int hcount=0;
public int tcount=0;
public static void toss()
{
Random rand = new Random();
int sideup = rand.nextInt(2);
if (sideup == 0)
{
sideUp = "heads";
hcount++;
}
else
{
sideUp = "tails";
tcount++;
}
}
public static void main(String[] args)
{
for(int i=0;i<20;i++)
{toss();}
System.out.println("total heads = " + hcount + " total tails = " + tcount);
}
}
公共级硬币
{
公共静态字符串sideUp;
公共整数hcount=0;
公共int t帐户=0;
公共静态void toss()
{
Random rand=新的Random();
int sideup=rand.nextInt(2);
如果(sideup==0)
{
sideUp=“头”;
hcount++;
}
其他的
{
sideUp=“tails”;
t计数++;
}
}
公共静态void main(字符串[]args)
{
for(int i=0;i简单的修复方法是在if语句之前放入for循环中,但我在这里看到了很多可以做的事情。首先,我将为Coin类添加一个构造函数,并将hcount和tcount添加到类变量中,并生成head和tails常量:
private String sideUp;
private int hcount;
private int tcount;
private static final String HEADS = "Heads";
private static final String Tails = "Tails";
Coin()
{
this.sideUp = HEADS;
this.hcount = 0;
this.tcount = 0;
}
然后我会做一个方法来检查抛投:
public void checkToss()
{
if (getsideup().equals(HEADS))
hcount++;
else
tcount++;
}
现在将toss()和checkCoin()方法添加到if语句之前的for循环中。它应该如下所示:
for (int i = 1; i <= 20; i++)
{
coin.toss();
coin.checkToss();
}
import java.util.Random;
public class Coin
{
private String sideUp;
private int hcount;
private int tcount;
private static final String HEADS = "Heads";
private static final String TAILS = "Tails";
Coin()
{
this.sideUp = HEADS;
this.hcount = 0;
this.tcount = 0;
}
public void toss()
{
Random rand = new Random();
int sideup = rand.nextInt(2);
if (sideup == 0)
sideUp = HEADS;
else
sideUp = TAILS;
}
public String getsideup()
{
System.out.println(sideUp);
return sideUp;
}
public void checkToss()
{
if (getsideup().equals(HEADS))
this.hcount++;
else
this.tcount++;
}
public int getHeadsCount()
{
return this.hcount;
}
public int getTailsCount()
{
return this.tcount;
}
public static void main(String[] args)
{
Coin coin = new Coin();
for (int i = 1; i <= 20; i++)
{
coin.toss();
coin.checkToss();
}
System.out.println("Total Heads = " + coin.getHeadsCount() + " Total Tails = " + coin.getTailsCount());
}
}
所有这些放在一起看起来都是这样的:
for (int i = 1; i <= 20; i++)
{
coin.toss();
coin.checkToss();
}
import java.util.Random;
public class Coin
{
private String sideUp;
private int hcount;
private int tcount;
private static final String HEADS = "Heads";
private static final String TAILS = "Tails";
Coin()
{
this.sideUp = HEADS;
this.hcount = 0;
this.tcount = 0;
}
public void toss()
{
Random rand = new Random();
int sideup = rand.nextInt(2);
if (sideup == 0)
sideUp = HEADS;
else
sideUp = TAILS;
}
public String getsideup()
{
System.out.println(sideUp);
return sideUp;
}
public void checkToss()
{
if (getsideup().equals(HEADS))
this.hcount++;
else
this.tcount++;
}
public int getHeadsCount()
{
return this.hcount;
}
public int getTailsCount()
{
return this.tcount;
}
public static void main(String[] args)
{
Coin coin = new Coin();
for (int i = 1; i <= 20; i++)
{
coin.toss();
coin.checkToss();
}
System.out.println("Total Heads = " + coin.getHeadsCount() + " Total Tails = " + coin.getTailsCount());
}
}
import java.util.Random;
公共级硬币
{
私有字符串sideUp;
私人国际帐户;
私人帐户;
私有静态最终字符串HEADS=“HEADS”;
私有静态最终字符串TAILS=“TAILS”;
硬币()
{
this.sideUp=头;
此.hcount=0;
this.tcount=0;
}
公众投票
{
Random rand=新的Random();
int sideup=rand.nextInt(2);
如果(sideup==0)
sideUp=头部;
其他的
sideUp=尾部;
}
公共字符串getsideup()
{
系统输出打印项次(sideUp);
返回sideUp;
}
公共无效校验码()
{
if(getsideup().equals(HEADS))
这个.hcount++;
其他的
这个.tcount++;
}
公共int getHeadsCount()
{
返回此.hcount;
}
public int gettailscont()
{
返回此.t帐户;
}
公共静态void main(字符串[]args)
{
硬币=新硬币();
对于(int i=1;我不应该在for cycle中调用toss()
?除此之外,我看不出有什么问题。这是混合责任。我认为将toss添加到getter中会让人困惑。然后调用toss()来自for loop man的方法!我编辑了我的帖子…我只是想帮助你…没有任何意义的投票!当有人指出他们认为你的答案不太好时,也没有任何意义感到不安。当你在这里回答问题时,无论你有多好,都会经常发生这种情况。只要试着从中学习。这会让我更容易理解如果在toss方法中增加计数,而不是试图设置字符串,则在另一个方法中调用该方法并在那里增加它。那么,您还必须在toss方法中有一个setter,然后是setSide()。否则,您不能为getter设置要检索的值。调用toss()在for循环中,它现在正在运行。我相信这本书所要求的方式,谢谢大家的帮助。如果它有助于解决问题,请给出答案。