Java实现链表反转时控制台输出尾部出现%符号的原因及解决方法
解决Java链表反转输出末尾的%符号问题
这个%符号不是你的程序输出的,而是终端(比如zsh)的命令提示符。原因很简单:你打印反转后的链表时,最后没有输出换行符,终端的提示符就直接跟在了程序输出的末尾。
看你的代码就能发现,打印初始链表后用了System.out.println();来换行,但打印反转链表的循环结束后,完全没做换行操作——这就是问题的核心。
解决方案
在打印反转链表的循环结束后,补上一行换行代码就行:
// print out the reversed list while (head2 != null){ System.out.print(head2.val); head2 = head2.next; if(head2 != null){ System.out.print("->"); } } // 新增这行代码,输出换行 System.out.println();
修改后再运行程序,输出就会变成正常的样子:
(base) ➜ desktop javac ReverseLinkedList1.java (base) ➜ desktop java ReverseLinkedList1 1->2->3->4->5 5->4->3->2->1
终端提示符会乖乖出现在新的一行,不会再和程序输出混在一起了。
补充说明
如果你用的是bash、zsh这类终端shell,当程序输出没有以换行结尾时,shell就会在输出末尾加一个%来标记这个特殊情况(和正常换行后的提示符做区分)。只要确保程序输出最后有换行,这个符号自然就消失了。
内容的提问来源于stack exchange,提问作者Cheng Young
相关产品推荐
相关产品推荐

