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

为什么Linux下运行Java程序时输出字符串末尾会出现%字符?

原因说明

末尾的%不属于Java程序的输出内容,是你使用的Zsh、Fish等新式Shell的默认特性:当运行的进程输出内容的末尾没有换行符\n时,Shell会主动追加一个高亮的%并自动换行,避免后续的命令提示符和程序输出拼接在同一行影响阅读。

你当前代码全程使用System.out.print()方法输出内容,该方法只会原样输出传入的字符串,不会自动追加换行符,最终程序输出的DooBeeDooBeeDo末尾没有换行,因此被Shell打上了%标记。
你可以执行echo -n "test"命令验证:如果输出结果为test%,即可确认是Shell的特性,和Java版本、代码逻辑无关。

解决方法

仅需保证程序最终输出的末尾携带换行符即可,推荐两种修改方案:

方案1:最后一次输出改用println方法

System.out.println()会在输出传入内容后自动追加换行符,修改if判断内的输出语句即可:

if( x == 3) {
    System.out.println("Do");
}

方案2:手动添加换行符

如果要继续使用print方法,也可以手动在输出内容末尾加转义字符\n:

if( x == 3) {
    System.out.print("Do\n");
}

修改后重新执行编译、运行命令,末尾的%就会消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:48:03