java - Java程序中的Bizzare System.out.println()

标签 java linux string debugging char

String messageFile = ... // Assume messageFile SHOULD have the string "MESSAGE"
System.out.println("The messageFile is: " + messageFile + "!!");

通常,人们会期望上面的命令输出:

The messageFile is: MESSAGE!!!!

但是,我收到的是:

!!e messageFile is: MESSAGE

看上面的语句,“!!”点似乎环绕着消息。我的理论是:

String messageFile = ... 

包含的字符比我假定的“MESSAGE”更多。结果,它将下一个输入(在本例中为“!!”)包装到 System.out.println() 消息的前面。

是什么角色造成的?

额外信息:

顺便说一句,通过将命令行参数传递给 java 类 myClassA 来初始化 messageFile。 myClassA 的构造函数使用 super() 将 messageFile 参数传递给 myClassB。 myClassB 将 messageFile 传递给 function()。

最佳答案

我猜你在 messageFile 变量中有一个杂散的回车符 (\r),它没有换行符 (\n >).

编辑 - 此测试符合预期:

class Println {
        public static void main(String[] args) {
                System.out.println("xxxx this \rTEST");
        }
}

输出:

TEST this 

关于java - Java程序中的Bizzare System.out.println(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3407377/

相关文章:

regex - 匹配时如何查找、匹配和替换行尾

c - 垃圾附加在输出字符串 C 之后的末尾

java - 如何覆盖/替换 Maven 项目中的 GWT 类?

java - Hibernate:如何获取用于突出引用目的的实体?

java - 设置 Cassandra 代码格式化程序,options/code.style.schemes.xml 的用途是什么?

java - 关于@PostConstruct 的问题

c++ - 使用 vim 检测 C++ 标准头文件的文件类型

linux - 谷歌浏览器 Linux 的永久标志

java - 使用递归查找字符串中最长的回文

java - 将字符串乘以 double