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()。

最佳答案

我猜想你在\r变量中有一个流回车符(messageFile),它没有换行符(\n)。

编辑-此测试符合预期:

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

输出:
TEST this

10-06 07:17