为什么我的 Java 输出字符串以末尾的 % 字符结尾?

Why does my Java output string end with the % character at the end?

提问人:adi. 提问时间:8/25/2021 更新时间:8/25/2021 访问量:1155

问:

我在 Linux 上使用的 Java 版本是:

  • OpenJDK 版本“16.0.2” 2021-07-20
  • OpenJDK 运行时环境(内部版本 16.0.2+7)
  • OpenJDK 64 位服务器 VM(内部版本 16.0.2+7,混合模式)

这是我用来编译 Head-First Java 一书的代码:

public class DooBee {
public static void main(String[] args) {    
  int x = 1;
  while (x < 3) {
    System.out.print("Doo");
    System.out.print("Bee");
    x = x + 1;
  }
    if( x == 3) {
        System.out.print("Do");
    }
}

}

我是这样编译的:

javac DooBee.java

java DooBee

这是输出:

DooBeeDooBeeDo% 

为什么字符串末尾会出现特殊字符(%),我该如何编写代码来摆脱它?

Java 字符串 循环

评论

4赞 Joachim Sauer 8/25/2021
无法重现,您的代码不会产生此结果。由于您没有在代码中的任何位置打印换行符,因此 可能只是 shell 的提示。尝试添加一个空的代码,添加代码的末尾。%System.out.println()
0赞 adi. 8/25/2021
我在System.out.print(“Do”)之后添加了System.out.println(),并且特殊字符不再出现。此外,我已经在 shell 中编写并编译了代码,因此您是对的。为什么它首先会出现?
2赞 Joachim Sauer 8/25/2021
我敢打赌它仍然会出现,但只是低了一行,你期望你的 shell 提示符,因为它就是这样。

答:

1赞 Sam 8/25/2021 #1

我不认为 % 来自你的 java 程序,而是来自你的 shell。程序的最后一个输出是 a 而不是 .这将导致输出结束时没有换行符。您正在运行的 shell 将返回到现有行的中间。如果它使用 % 作为提示,那么这就是原因。
将最后一个更改为,希望您很好。尝试在 IDE 或其他 shell 中运行它以确保。或者也许更改提示,只是作为调试措施?
print()println()printprintln

评论

0赞 adi. 8/25/2021
我已将最后一个更改为,现在它正确出现。我还在 shell 中编写和编译了程序,因此问题应该在 shell 中是有道理的。print()println()
5赞 m.antkowicz 8/25/2021 #2

可能您正在使用 ZSH 终端,如果进程未提供新行,它会自动以字符(对于 root 用户)结束行(或者更确切地说是“在同一行中开始新行”),从而创建名为部分行的内容%#

请注意,您使用的是System.out.printSystem.out.println


在这里阅读更多内容: