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

JTextField字符串拆分与IntParse异常:海龟图形项目求助

排查海龟图形命令输入的常见问题

Hey,我之前做类似的图形项目时也踩过字符串处理的坑,咱们一步步来揪出问题所在!

最可能的元凶:空白字符处理不当

你用split(" ")来分割字符串的话,很容易因为输入里的多余空格出问题:

  • 比如用户不小心输入了前后空格:" forward 100 ",用split(" ")分割后会得到["", "forward", "", "100", ""]这样的数组,这时候你取parts[1]是命令没问题,但取parts[2]去转整数就会拿到空字符串,直接触发NumberFormatException。
  • 或者输入中间有多个空格,同样会生成空的数组元素。

解决办法是先给输入做**trim()**去掉前后空格,再用\\s+(匹配任意数量的空白字符,包括空格、制表符等)来分割:

String rawInput = commField.getText();
// 先清理前后空白,再按任意空白分割
String[] parts = rawInput.trim().split("\\s+");

容易忽略的大小写问题

如果你的代码里是严格判断parts[0].equals("forward"),那用户输入Forward或者FORWARD都会不匹配,直接进入错误提示分支。可以把命令转成统一大小写再判断:

String command = parts[0].toLowerCase();
if (command.equals("forward")) {
    // 执行前进逻辑
}

数组越界的隐藏坑

如果split后的数组长度不是2(比如用户只输入了forward没输数字),直接去取parts[1]会触发ArrayIndexOutOfBoundsException,所以在处理前一定要先判断数组长度:

if (parts.length != 2) {
    JOptionPane.showMessageDialog(null, "请输入正确格式的命令,比如'forward 100'");
    return;
}

快速排查技巧

在处理输入的代码里加一行打印,看看实际分割后的数组内容,就能直观看到问题:

System.out.println(Arrays.toString(parts));

比如运行后控制台输出["forward", "100"]就是正常的,如果输出里有空字符串或者长度不对,就对应上面的问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:42:44