System.out.println()跳过值/输出不完整

时间:2016-01-26 13:13:58

标签: java

我有一个相对简单的控制台输出用于调试目的,因为我试图找出与此问题无关的错误。我的代码如下:

System.out.println("info: " + element + " || " + getIDforName(element));

String类型的变量element取自cmd输出,可能是空/ null。因此,我希望它输出类似info: null || null的内容。然而,它并没有这样做,但输出这个:|| null这真的令我感到困惑。 如果由于某种原因不能完全写出它或者它会写info: ||,我会解释它,但实际的输出对我没有意义,因为它不能只跳过一部分。

所以我的问题是:为什么会发生这种情况,我该如何解决?如果需要任何其他代码,我会尝试提供它。

编辑: getIDforName(字符串名称)是一种比较某些字符串的方法,如果存在匹配字符串,则返回字符串。

4 个答案:

答案 0 :(得分:1)

我在运行时使用调试器检查了element的内容,调试器给了我一个null的值,并打印出Tom指出的byteArray值,返回正确的值,因为它应该是(输入[76, 111, 103, 111, 110]的字符串的字节,例如Logon

因此,出于纯粹的好奇心,我使用了element中包含的字符串的trim()方法,现在它以某种方式运行。即使其他测试都没有产生表明会有空格的结果。

<强>更新

我遇到此问题的原因如下:变量的初始值来自Windows cmd,因此由\r\n分隔,但我只将其拆分为\n,因此在最后一项上在JList中,它只是将编写好的字符串写回来,并将\r写入控制台。使用System.lineSeparator()进行拆分解决了问题,而不是使用trim()来解决症状。非常感谢汤姆指出这一点。

答案 1 :(得分:0)

一种简单的方法来覆盖&#34; toString()&#34;元素类的方法。

检查此主题:

答案 2 :(得分:0)

您可以做的最简单的事情是首先验证element的内容,例如测试它是否真的为空。它很可能不是。 E.g。

System.out.println("info: " + "\b\b\b\b\b\b" + " || " + null);

可能会产生

|| null

所以我怀疑element包含"\b\b\b\b\b\b"或任何其他控制字符,正如其他人所建议的那样。

答案 3 :(得分:0)

可能这种行为是由于一个空字符串&#34;&#34;不是空的。

试试这个:

System.out.println("info: " + (element.length() == 0 ? null : element) + " || " + element);

在System.out

中传递元素之前测试null