You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java LinkedList抛硬币连续正面判定条件1未执行排查

功能判定规则
  • 条件1:若输入序列存在连续≥10次正面(head对应布尔值true,tail对应布尔值false),程序输出Streak is found
  • 条件2:若输入序列连续正面次数不足10次,程序输出Streak is broken
现存问题

基于Java LinkedList编写实现代码后,条件1始终无法正常触发输出,完整原始代码如下:

import java.util.LinkedList;
import java.util.Iterator;
import java.util.Scanner;

public class LinkedListProgram2
{    
public static void main (String [] args)
{
    Scanner input = new Scanner (System.in);
    LinkedList<String> cointoss = new LinkedList<String>();
    boolean head = true;
    boolean tail = false;
    boolean streak = true;
    int streakcount = 0;

    System.out.println ("Welcome to the Program #2 ");
    //ask for the boolean value. It can be head and tail or true and false.
    System.out.print ("\nEnter the boolean value (head=true, tail=false): ");
    
    for (int i = 0; i<18; i++)
    {
        cointoss.add(input.next());        
    }
    
    Iterator<String> it = cointoss.iterator();
    while (it.hasNext())
    {
        if(streakcount >= 10)
        {
            streak = true;
            System.out.println ("Streak is found! ");
            break;
        }
        else if(streakcount < 10)
        {
            streak = false;
            System.out.println ("Streak is broken! ");
            break;
        }
    }
}
}
故障原因

代码存在3个核心逻辑错误,导致条件1永远无法触发:

  • 迭代器遍历时从未读取元素:整个while循环中没有调用it.next()获取当前遍历到的掷硬币结果,根本没有对输入内容做任何判断
  • 连续正面计数逻辑完全缺失:streakcount初始化后从未更新,既没有遍历到正面时累加计数的逻辑,也没有遇到反面时重置计数的逻辑,变量值始终为0
  • 判断逻辑提前终止:进入循环第一次就直接判断streakcount大小,无论结果如何都会直接break退出循环,根本没有完成序列遍历
修复后代码
import java.util.LinkedList;
import java.util.Iterator;
import java.util.Scanner;

public class LinkedListProgram2
{    
public static void main (String [] args)
{
    Scanner input = new Scanner (System.in);
    LinkedList<String> cointoss = new LinkedList<String>();
    int streakcount = 0;
    boolean hasValidStreak = false;

    System.out.println ("Welcome to the Program #2 ");
    System.out.print ("\nEnter the boolean value (head=true, tail=false): ");
    
    for (int i = 0; i<18; i++)
    {
        cointoss.add(input.next());        
    }
    
    Iterator<String> it = cointoss.iterator();
    while (it.hasNext())
    {
        String currentRes = it.next();
        // 匹配正面输入,支持head/true两种输入格式
        if ("head".equals(currentRes) || "true".equals(currentRes)) {
            streakcount++;
            if (streakcount >= 10) {
                hasValidStreak = true;
                break;
            }
        } else {
            // 遇到反面重置连续计数
            streakcount = 0;
        }
    }

    System.out.println(hasValidStreak ? "Streak is found" : "Streak is broken");
    input.close();
}
}

内容的提问来源于stack exchange,提问作者qtoou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 12:57:17