Java 数一数头上最长的条纹
我已经被困在这几个星期了,我不知道怎么做。我只想要最长的脑袋。我试了无数次,但我不知道我做错了什么Java 数一数头上最长的条纹,java,Java,我已经被困在这几个星期了,我不知道怎么做。我只想要最长的脑袋。我试了无数次,但我不知道我做错了什么 public class LongestStreak extends ConsoleProgram { public static final int FLIPS = 100; int currentRun; int runStart; int maxRun; public void run() { double heads = 0; double tails = 0; for(int
public class LongestStreak extends ConsoleProgram
{
public static final int FLIPS = 100;
int currentRun;
int runStart;
int maxRun;
public void run()
{
double heads = 0;
double tails = 0;
for(int i = 0; i < FLIPS; i++)
{
if(Randomizer.nextBoolean())
{
System.out.println("Heads");
heads++;
currentRun++; // use ++ in preference to +=1, and this should be before maxRun test
if (maxRun < currentRun) {
maxRun = currentRun;
runStart = currentRun - i; // this will produce a 1-based position
} else {
currentRun = 0;
}
}
else
{
System.out.println("Tails");
tails++;
}
}
System.out.println(FLIPS);
}
公共类LongestStreak扩展控制台程序
{
公共静态最终整数翻转=100;
int currentRun;
int运行启动;
int-maxRun;
公开募捐
{
双头=0;
双尾=0;
对于(int i=0;i
}我不确定我是否正确理解您的问题,但这里我有一个解决方案,它将在100次翻转中打印出最长的连拍
public static void run() {
Random r = new Random();
double heads = 0;
double tails = 0;
for (int i = 0; i < FLIPS; i++) {
if (r.nextBoolean()) {
System.out.println("Heads");
heads++;
currentRun++;
if (maxRun < currentRun) {
maxRun = currentRun;
runStart = currentRun - i;
}
} else {
System.out.println("Tails");
tails++;
currentRun = 0;
}
}
System.out.println(FLIPS);
System.out.println(maxRun);
}
publicstaticvoidrun(){
随机r=新随机();
双头=0;
双尾=0;
对于(int i=0;i
公共类LongestStreak扩展控制台程序
{
公共静态最终整数翻转=100;
公开募捐
{
int连续头=0;
int maxRun=0;
对于(int i=0;i
您永远不会打印条纹。相反,你打印出循环的边界。当尾部被翻转时,你应该考虑将Currin Encun重置为0。AH,所以我把它改为打印出Max Run,但是Max运行似乎只是所有的头。就像在100次翻转中,有51个头。我不想那样。你不应该把currentRun归零,以防你得到线索吗?是的,我把重置添加到了currentRun。有人知道该怎么做吗?
public class LongestStreak extends ConsoleProgram
{
public static final int FLIPS = 100;
public void run()
{
int consecutiveHeads = 0;
int maxRun = 0;
for(int i = 0; i < FLIPS; i++)
{
if(Randomizer.nextBoolean())
{
System.out.println("Heads");
consecutiveHeads++;
if(maxRun < consecutiveHeads)
{
maxRun = consecutiveHeads;
}
}
else
{
System.out.println("Tails");
consecutiveHeads = 0;
}
}
System.out.println("Longest streak of heads: " + maxRun);
}
}