Tutorial :Bizzare System.out.println() in Java Program



Question:

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

Normally, one would expect the above command to output:

The messageFile is: MESSAGE!!!!  

However, I am receiving this instead:

!!e messageFile is: MESSAGE  

See how the above statement, the "!!" points seem to wrap around the message. My theory is that the:

String messageFile = ...   

contains more characters than my assumed "MESSAGE". As a result, it's wrapping the next input (in this case, the "!!") to the front of the System.out.println() message.

What character is causing this?

Extra info:

Btw, messageFile is being initialized by passing a command line argument to a java class, myClassA. myClassA's constructor uses a super() to pass the messageFile parameter to myClassB. myClassB passes messageFile into a function().


Solution:1

I would guess you have a stray carriage return (\r) within the messageFile variable that is unaccompanied by a line feed (\n).

EDIT - this tests as expected:

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

Output:

TEST this   


Solution:2

Your message variable possibly contains a '\r' (carriage return) or '\n' (line feed) character at the end. This may cause the cursor to return to the first column before printing the exclamation marks.


Solution:3

For debugging you should print the codepoint of each character of messageFile via codePointAt. As as result you see exactly the content of messageFile.


Solution:4

Replace all carriage returns in the file with newlines and then replace all double-newlines with single-newlines:

messageFile.replace('\r', '\n').replace("\n\n", "\n)  

Carriage returns should be banned :D


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »