如何在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
相关产品推荐
相关产品推荐

