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

如何在Java字符数组赛道中打印"OUCH"且不单独换行打乱游戏输出

解决方案

核心问题出在两点:

  • 你调用了System.out.println()打印OUCH,该方法会自动在输出内容末尾追加换行符,导致OUCH单独占一行
  • 现有逻辑是先单独打印OUCH,再打印整段赛道,自然会拆分到两行

方案1:将OUCH嵌入赛道对应位置显示(推荐)

这种方式会把OUCH直接显示在龟兔重合的赛道位置,不会破坏整体赛道的展示逻辑,也不会产生额外换行:

// 删掉原来if (turtlePosition == harePosition)里的单独打印代码
track[turtlePosition] = 'T';
track[harePosition] = 'H';

// 打印赛道的时候做判断
for (int i = 0; i < track.length; i++)
{
    // 如果当前位置是龟兔重合位置,打印OUCH代替单个字符
    if (turtlePosition == harePosition && i == turtlePosition) {
        System.out.print("OUCH");
    } else {
        System.out.print(track[i]);
    }
}
// 整行打印完成后再加换行
System.out.println();

方案2:OUCH放在当前赛道行的末尾

如果你希望赛道本身格式不变,只在同一行的末尾追加OUCH提示,可以这样改:

boolean isCoincide = turtlePosition == harePosition;
// 先正常打印赛道
for (int i = 0; i < track.length; i++)
{
    System.out.print(track[i]);
}
// 同一行追加OUCH,不换行
if (isCoincide) {
    System.out.print(" OUCH");
}
// 最后统一加换行
System.out.println();

两种方案都不会产生额外的独立行,也不会打乱现有输出流程,可根据你的展示需求选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 23:48:04