Java 平头条纹输出
我应该把一枚硬币掷100次,找出最长的头像,然后输出,但到目前为止,它只给出了总共有多少头像。我试过很多方法,但都找不到解决办法Java 平头条纹输出,java,Java,我应该把一枚硬币掷100次,找出最长的头像,然后输出,但到目前为止,它只给出了总共有多少头像。我试过很多方法,但都找不到解决办法 public class LongestStreak extends ConsoleProgram { public static final int FLIPS = 100; public void run() { int h = 0; int t = 0; boolean wasHeads
public class LongestStreak extends ConsoleProgram
{
public static final int FLIPS = 100;
public void run()
{
int h = 0;
int t = 0;
boolean wasHeads = false;
boolean isHeads = false;
int streak = 0;
int ih = 0;
for (int i = 0; i < FLIPS; i++) {
int coinFlip = Randomizer.nextInt(1, 2);
if (coinFlip == 2) {
System.out.println("Heads");
h++;
ih++;
isHeads = true;
if (ih > 1) {
wasHeads = true;
}
if ((isHeads = true) && (wasHeads = true)) {
streak++;
} else {
streak = 0;
}
} else if (coinFlip == 1) {
System.out.println("Tails");
t++;
isHeads = false;
ih = 0;
}
}
System.out.println(streak);
}
}
公共类LongestStreak扩展控制台程序
{
公共静态最终整数翻转=100;
公开募捐
{
int h=0;
int t=0;
布尔值wasHeads=false;
布尔值=false;
int streak=0;
int-ih=0;
对于(int i=0;i1){
wasHeads=真;
}
如果((isHeads=true)&(wasHeads=true)){
streak++;
}否则{
条纹=0;
}
}else if(coinFlip==1){
系统输出打印项次(“尾部”);
t++;
isHeads=假;
ih=0;
}
}
系统输出打印项次(条纹);
}
}
您需要大大简化代码
public class LongestStreak extends ConsoleProgram
{
public static final int FLIPS = 100;
public void run()
{
int wasHeads = 0;
int streak = 0;
int bestStreak = 0;
for (int i = 0; i < FLIPS; i++) {
int coinFlip = Randomizer.nextInt(1, 2);
if (coinFlip == 2) {
streak++;
wasHeads = 1;
} else if (coinFlip == 1) {
wasHeads = 0;
if (steak > bestStreak) {
bestStreak = streak;
}
streak = 0;
}
}
System.out.println(streak);
}
}
公共类LongestStreak扩展控制台程序
{
公共静态最终整数翻转=100;
公开募捐
{
int wasHeads=0;
int streak=0;
int-bestStreak=0;
对于(int i=0;i最佳条纹){
最佳条纹=条纹;
}
条纹=0;
}
}
系统输出打印项次(条纹);
}
}
结束时重置条纹(coinFlip为1),但首先检查它是否优于之前的最佳条纹,如果是,则相应地更新最佳条纹。否则,只需重复streak并将每个头部的洗头数保持为1。注意这里不需要布尔值;1或0整数在字面上和逻辑上都是相同的。首先,请在此处修改您的行,以便更容易阅读:
}否则,如果(coinFlip==1){
(这两个紧括号之间需要换行符)
我会考虑设置一些更清楚的变量名。例如:<代码>总目,<代码> TooTauls<代码>。我不太明白你的<代码> IH < /C>变量应该是什么,但是我用来解决这个问题的变量名是“代码> TraskAu/<代码>和<代码> BestStuxAu/COD>。ary.我认为这应该足以推动您找到解决方案。
您可以稍微简化您的代码,清洗头和ISHEAD
并不是真正需要的。此外,更具描述性的变量名使您的代码更容易理解。因此,类似这样的内容:
public class LongestStreak extends ConsoleProgram
{
public static final int FLIPS = 100;
public void run()
{
int h = 0;
int t = 0;
boolean wasHeads = false;
boolean isHeads = false;
int streak = 0;
int ih = 0;
for (int i = 0; i < FLIPS; i++) {
int coinFlip = Randomizer.nextInt(1, 2);
if (coinFlip == 2) {
System.out.println("Heads");
h++;
ih++;
isHeads = true;
if (ih > 1) {
wasHeads = true;
}
if ((isHeads = true) && (wasHeads = true)) {
streak++;
} else {
streak = 0;
}
} else if (coinFlip == 1) {
System.out.println("Tails");
t++;
isHeads = false;
ih = 0;
}
}
System.out.println(streak);
}
}
public void run() {
int highestNumberOfConsecutiveHeads = 0;
int currentNumberOfConsecutiveHeads = 0;
for (int i = 0; i < 100; i++) {
if (Randomizer.nextInt(1, 2) == 2) {
currentNumberOfConsecutiveHeads++;
if (currentNumberOfConsecutiveHeads > largestNumberOfConsecutiveHeads) {
highestNumberOfConsecutiveHeads = currentNumberOfConsecutiveHeads;
}
} else {
currentNumberOfConsecutiveHeads = 0;
}
}
System.out.println("Longest streak: " + highestnumberOfConsecutiveHeads);
}
public void run(){
int highestnumberofcontinuenceheads=0;
int currentNumberOfConcertiveHeads=0;
对于(int i=0;i<100;i++){
if(Randomizer.nextInt(1,2)==2){
当前连续磁头数++;
如果(CurrentNumberOfConcertiveHeads>LargestNumberOfConcertiveHeads){
最高连续头数=当前连续头数;
}
}否则{
CurrentNumberOfConcertiveHeads=0;
}
}
System.out.println(“最长条纹:+最高连续磁头数”);
}
谢谢您的帮助,修复了我的代码:)
{
公共静态最终整数翻转=100
public void run()
{
int h = 0;
int t = 0;
boolean wasHeads = false;
boolean isHeads = false;
int longest = 0;
int streak = 0;
int ih = 0;
for (int i = 0; i < FLIPS; i++) {
int coinFlip = Randomizer.nextInt(1, 2);
if (coinFlip == 2) { //heads
System.out.println("Heads");
if (wasHeads = true) {
streak++;
} else {
streak = 0;
}
wasHeads = true;
} else if(coinFlip == 1) { //tails
System.out.println("Tails");
t++;
isHeads = false;
if (streak > longest){
longest = streak;
}
streak = 0;
ih = 0;
}
}
System.out.println("Longest streak of heads: " + longest);
}
public void run()
{
int h=0;
int t=0;
布尔值wasHeads=false;
布尔值=false;
int=0;
int streak=0;
int-ih=0;
对于(int i=0;i最长){
最长=条纹;
}
条纹=0;
ih=0;
}
}
System.out.println(“头的最长条纹:“+最长”);
}
}您是否检查过随机化器是否不时给出一个尾部?如果((isHeads=true)和(&(wasHeads=true))
将始终是真的
。您在这里不是做比较(例如,如果(isHeads&wasHeads)
),您是在做作业(赋值的返回是被赋值的值;在本例中为true
)。此外,您再也不会将wasHeads
设置为false
。这意味着一旦设置为true
,它将从此保持true
。使用规范的Java命名约定,例如totalHeads
。