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

Java构建无向图的for循环卡顿不退出,仅执行4次就停止整个程序

问题根因

你代码中的边读取循环边界设置错误,是导致程序无报错卡住的直接原因:

  • 你已经通过edges变量获取了输入中边的总数量,但是实际写边录入逻辑时,错误使用节点数nodes作为循环上限
  • Scanner的nextInt()方法在没有更多输入可读时,会进入阻塞等待状态,不会抛出异常,表现就是程序停住无响应。
数值对应验证

你本次测试用例的参数:

  • 节点数nodes=6,边数edges=5
  • 代码要求循环6次读取边,每次读2个整数,算上开头读取的nodes和edges,总共需要读取14个整数
  • 但你的测试输入总共只有12个整数,读完所有输入后第6次循环等待新输入,程序自然卡住。
修复方案

仅需要修改边录入循环的判断条件,把循环上限从nodes换成edges即可:

// 原错误代码
// for (int i = 0; i < nodes; i++){
// 修复后代码
for (int i = 0; i < edges; i++){
    a = in.nextInt()-1;
    b = in.nextInt()-1;
    graph[a].add(b);
    graph[b].add(a);
    System.out.println(i);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:36:03