【问题标题】:Why does my Java output string end with the % character at the end?为什么我的 Java 输出字符串以 % 字符结尾?
【发布时间】:2021-10-25 11:28:29
【问题描述】:

我在 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% 

为什么这个特殊字符(%)出现在字符串的末尾,我该如何编写代码来消除它?

【问题讨论】:

  • 无法重现,您的代码不会产生这个。由于您不在代码中的任何位置打印换行符,% 可能只是您的 shell 的提示。尝试添加一个空的System.out.println() 添加代码的末尾。
  • 我在 System.out.print("Do") 之后添加了一个 System.out.println() 并且特殊字符不再出现。另外我在shell中编写并编译了代码,所以你是正确的。为什么它首先出现?
  • 我敢打赌它仍然会出现,但只是下一行,你期望你的 shell 提示符的地方,因为它就是这样。

标签: java string loops


【解决方案1】:

您可能正在使用 ZSH 终端,如果新行不是由这个过程,创建了一个名为partial line

请注意您使用的是System.out.print 而不是System.out.println


在这里阅读更多:

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我已将最后一个 print() 更改为 println(),现在它显示正确。我还在 shell 中编写和编译了程序,所以问题应该出在 shell 中是有道理的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 2011-11-05
    • 2012-06-12
    • 2017-08-27
    • 2010-11-18
    相关资源
    最近更新 更多