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

Java读取字符数组输入时出现无限循环问题求助

解决Java读取迷宫字符数组时的无限循环问题

我来帮你搞定这个读取迷宫时卡无限循环的问题~这种情况绝大多数是**Scanner.nextInt()留下的换行符搞的鬼**,咱们一步步来解决:

问题根源

当你用nextInt()读取完所有整数后,输入流里其实还残留着一个换行符(就是你输入完最后一个整数后按的回车)。如果接下来直接去读取字符/行,Scanner会先读到这个换行符,而不是你想要的迷宫行内容,这就会导致你的读取逻辑混乱,甚至触发无限循环。

修正后的代码示例

给你调整一下读取逻辑,重点处理换行符,然后正确读取每一行的字符:

public static void main(String[] args) {
    Scanner kbd = new Scanner(System.in);
    int y = kbd.nextInt(); // 行数
    int x = kbd.nextInt(); // 列数
    int initX = kbd.nextInt(); // 起始位置X
    int initY = kbd.nextInt(); // 起始位置Y
    int endX = kbd.nextInt(); // 目标位置X
    int endY = kbd.nextInt(); // 目标位置Y
    
    // 关键步骤:吃掉nextInt之后残留的换行符
    kbd.nextLine();
    
    char[][] maze = new char[y][x];
    for (int i = 0; i < y; i++) {
        // 读取完整的一行迷宫内容
        String row = kbd.nextLine();
        // 把字符串转成char数组存入二维数组
        maze[i] = row.toCharArray();
    }
    
    // 这里可以加个测试,验证迷宫是否读取正确
    for (char[] row : maze) {
        System.out.println(row);
    }
}

额外注意事项

  • 如果你的输入每行末尾有多余空格,或者每行长度和x不匹配,可能还需要做些调整(比如用trim()去掉首尾空白,或者截取前x个字符),但核心问题还是处理换行符。
  • 要是之后还是有循环问题,可以检查一下你的读取循环条件,比如是不是误把行数和列数搞反了(比如循环次数写成了x而不是y)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:19:45