这是我目前所拥有的,但我似乎不知道该怎么做。到目前为止,我只能存储翻转的头部和尾部的总量。
import java.util.*;
class Main {
public static void main(String[] args) {
int heads = 0, tails = 0;
int usernum;
int hc=0;
Scanner scan = new Scanner(System.in);
Coin myCoin = new Coin();
System.out.println("The number flips: ");
usernum=scan.nextInt();
for (int count = 1; count <= usernum; count++)//this is where I'm having the most trouble, as I can't figure out how to store the greatest streak for heads and tails.
{
myCoin.flip();//generates either 1 or 0
if (myCoin.isHeads())//checks if the integer is equal to 1 (which is heads in this case)
{
heads++;
System.out.println("Heads");
if (heads>=hc)
hc++;
}else{
tails++;
hc=0;
System.out.println("Tails");
}
}
System.out.println("Heads: " + heads);
System.out.println("Tails: " + tails);
}
}
3条答案
按热度按时间tvz2xvvm1#
跟踪三个变量:
headStreak
,tailStreak
,和maxStreak
,全部初始化为0。在for循环中,当遇到头部时,需要做3件事:增量
headStreak
如果tailStreak
大于maxStreak
,套maxStreak
至tailStreak
套tailStreak
到0。当你遇到尾巴的时候做同样的事情,除了替换
headStreak
与tailStreak
反之亦然。for循环之后:
System.println(Math.max(Math.max(headStreak, tailStreak), maxStreak))
. 如果您正确地执行了这些步骤,它应该可以工作。zqry0prt2#
您可以应用以下算法来解决此问题:
你可以使用两个变量,比如
headStreak
以及tailStreak
跟踪各自的条纹。当条纹中断时,将其重置为1
.你可以使用两个变量,比如
maxTailStreak
以及maxHeadStreak
跟踪各条纹的最大值。你可以用一个变量,比如
last
跟踪最后一次翻转的结果。从…开始last = -1
设置为1
万一Heads
,和0
万一Tails
.演示:
示例运行:
bjp0bcyl3#
您需要为每个条纹设置一个计数器,并获得如下最大值: