Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个java代码有问题-应该在随机抛硬币时打印和计算正面和反面的数量_Java - Fatal编程技术网

这个java代码有问题-应该在随机抛硬币时打印和计算正面和反面的数量

这个java代码有问题-应该在随机抛硬币时打印和计算正面和反面的数量,java,Java,正如标题所说,我必须使用一个类文件和一个主方法java文件来调用类文件并打印出起始硬币面,以及40多个硬币面翻转。我还需要有两个计数器来计算正面和反面的数量。这是我的类文件和主方法文件的代码。我遇到的问题是,每当我运行它时,它总是打印出正面有0个计数,反面有40个计数 类文件: import java.util.Random; public class CoinToss { private String sideUp; public CoinToss()

正如标题所说,我必须使用一个类文件和一个主方法java文件来调用类文件并打印出起始硬币面,以及40多个硬币面翻转。我还需要有两个计数器来计算正面和反面的数量。这是我的类文件和主方法文件的代码。我遇到的问题是,每当我运行它时,它总是打印出正面有0个计数,反面有40个计数

类文件:

import java.util.Random;

    public class CoinToss 
    {
    private String sideUp;

    public CoinToss()
    {
        Random randomNum = new Random();
        int number = randomNum.nextInt();

        if(number%2 == 0)
            sideUp = "heads";
        else
            sideUp = "tails";

        System.out.println(sideUp);
    }

    public void toss()
    {
        Random randomNum = new Random();
        int number = randomNum.nextInt();

        if(number%2 != 0)
        {
            sideUp = "heads";
        }
        else
        {
            sideUp = "tails";
        }

        System.out.println(sideUp);
    }

    public String getSideUp()
    {
        return sideUp;
    }

    }
主方法文件

public class CoinTossDemo 
{
public static void main(String[] args)
{
    int headsCount = 0;
    int tailsCount = 0;

    System.out.print("The Starting side of the coin is: ");
    CoinToss coin = new CoinToss();
    System.out.println();

    for(int x = 0; x < 40; x++)
    {
        System.out.print("The next side of the coin is: ");
        coin.toss();
        System.out.println();

        if(coin.equals("heads"))
        {
            headsCount++;
        }
        else
        {
            tailsCount++;
        }
    }

    System.out.println("The amount of heads that showed up is: " + headsCount);

    System.out.println();

    System.out.println("The amount of tails that showed up is: " + tailsCount);
}
}
公共类cointosdemo
{
公共静态void main(字符串[]args)
{
总人数=0;
int tailscont=0;
System.out.print(“硬币的起始面是:”);
cointost coin=新cointost();
System.out.println();
对于(int x=0;x<40;x++)
{
System.out.print(“硬币的下一面是:”);
掷硬币;
System.out.println();
如果(硬币等于(“头”))
{
总人数++;
}
其他的
{
tailscont++;
}
}
System.out.println(“显示的人头数为:“+人头数”);
System.out.println();
System.out.println(“显示的尾部数量为:“+tailscont”);
}
}

请帮助,提前感谢。

目前,您正在将
cointost coin
对象与字符串值
heads
进行比较,这就是为什么它总是转到
else
部分的原因

我可以看到,您正在将当前抛硬币的结果设置为
sideUp
(这是一个
字符串
)。因此,您需要将其与
if
中的
标题进行比较

if(coin.getSideUp().equals("heads")) { // getSideUp() returns the sideUp value
    headsCount++;
} else {
    tailsCount++;
}

您正在将答案分配给side-up属性,因此获取该值
coin.getSideUp()

for(int x=0;x<40;x++)
{
System.out.print(“硬币的下一面是:”);
掷硬币;
System.out.println();
if(coin.getSideUp().equals(“heads”)//使用sideup属性
{
总人数++;
}
其他的
{
tailscont++;
}
}
if(coin.equals(“heads”)应该是if(coin.getSideUp().equals(“heads”))
           for (int x = 0; x < 40; x++)
    {
        System.out.print("The next side of the coin is: ");
        coin.toss();
        System.out.println();

        if (coin.getSideUp().equals("heads")) // use the side up property
        {
            headsCount++;
        }
        else
        {
            tailsCount++;
        }
    }