java字符串的奇怪行为

java字符串的奇怪行为,java,Java,我有两个字符串变量ticker和detail。我试着在一行中打印出两个字符串。这就是行不通。我尝试过很多不同的方法。为了排除未初始化字符串的可能性,我尝试用不同的行打印它们。。。这很有效 这个例子有效。。。除了输出需要在一行中 System.out.println(ticker); System.out.println(detail); 输出为: IWM |0#0.0|0#0.0|0#-4252#386| GLD |0#0.0|0#0.0|0#-

我有两个字符串变量ticker和detail。我试着在一行中打印出两个字符串。这就是行不通。我尝试过很多不同的方法。为了排除未初始化字符串的可能性,我尝试用不同的行打印它们。。。这很有效

这个例子有效。。。除了输出需要在一行中

            System.out.println(ticker);
            System.out.println(detail);
输出为:

IWM
|0#0.0|0#0.0|0#-4252#386|
GLD
|0#0.0|0#0.0|0#-4704#818|
当我尝试以多种方式将输出放在一行中时,我得到的只是股票代码。。。详细信息字符串只是没有打印。。。而不是控制台或文件。以下是一些产生相同结果的示例代码段:

尝试1:

 System.out.println(ticker.concat(detail));
尝试2:

System.out.println(ticker+detail);
尝试3:

StringBuffer sb = new StringBuffer();
sb.append(ticker);
sb.append(detail);
System.out.print(sb.toString());
尝试4:

System.out.print(ticker);
System.out.println(detail);
在所有上述尝试中,我得到以下输出。。。就像忽略了详图部分一样:

GOLD
BBL
SI

是什么导致了这些症状?是否有办法将两个字符串打印在一行中?

可能是第一个字符串以“\n”结尾,换行符('\u000A')

这可能更适合作为注释,但我无法编写需要编写的代码段

弦是从哪里来的?它们是否来自可能包含一些奇怪控制字符的文件?如果您不是自己创建字符串,那么应该检查它们以查找嵌入的垂直回车或其他奇怪之处。对
详细信息
股票代码
字符串执行类似操作:

for (int i=0; i<detail.length(); ++i)
    System.out.println((int) detail.charAt(i));

for(int i=0;iI)看不出第一个输出和最后一个输出是如何关联的。它们根本不包含相同的内容。您可能没有打印您认为正在打印的内容。请尝试制作SSCCE()。是的,这是实时运行的,因此输出略有不同,但格式是存储在ticker中的某个ticker…存储在detail变量中的某个细节。您可以向我们显示
ticker
detail
字符串的实际内容吗?您可以调试代码并在那里获取文本…这意味着什么?这是虚构的吗时间?第一个打印的语句与调试器中显示的语句相匹配。这是一个有趣的想法…我将运行测试。有大量的0…我猜系统不会删除0,并假设它会终止字符串。我将继续这个想法。是否有一个标准库例程来消除尾随的0?ASCII NUL肯定计数这太奇怪了!如果你能在创建Java字符串对象之前去掉这些,我打赌你的问题会解决的。你在字符中使用字节值,如果你在其中输入了错误的值,这不是系统的错。在Java字符串中使用字节0x00没有错,那么为什么构造函数需要忽略它们呢。