在以下代码中:
if (j == 0)
{
if (!Arrays.equals(cipherData, c))
{
System.out.print("C: ");
for (int i = 0; i < encryptedData.length; i++)
System.out.print((char)cipherData[i]);
System.out.println();
}
}
System.out.println()
方法根本不返回任何内容。没有线,或任何东西,我不知道为什么。目标是在上面打印字节数组后打印一个空行,如果条件为真则打印。
任何帮助都将非常感谢和欢迎。
答案 0 :(得分:5)
System.out.print()
不会打印换行符。
您输出了大量内容,然后使用System.out.println()
打印换行符。这会导致光标下降到下一行。
如果你想要一个空行,你需要另一个。
编辑添加:我错过了您的for
循环条件与您正在打印的数组不同的事实。您的意思是这样的吗?
此外,由于您可能正在打印不可打印的字符,因此您可能会导致终端处于换行符不再起作用的状态。
归根结底,println()
没有被打破。要么它没有被调用,要么在调用它时没有看到换行符,那么终端处于不再识别它的状态。
答案 1 :(得分:1)
在迭代for循环之前,您可以检查encryptedData的长度
System.out.println(“encryptedData.length ::”+ encryptedData.length);
if encryptedData.length return greater than 1 then it will go into for loop.
You should debug step by step .
答案 2 :(得分:1)
检查
http://docs.oracle.com/javase/6/docs/api/java/io/PrintStream.html#println()
您可能需要System.out.print('\n')
;
答案 3 :(得分:1)
我对此表示担忧:
System.out.print((char)cipherData[i]);
假设cipherData
是一个字节数组,那么将一个字节转换为char
并通过字符流打印它不太可能产生漂亮的结果。首先,小于32十进制的字节将映射到ASCII“控制字符”。
此外,您可能正在打印错误的数组......或使用错误数组的长度。
(但对你的问题的解释是你需要第二次调用println
成为一个空行。第一个println只是终止包含...... umm ...“characters”的行。来自你的密码数组。)
答案 4 :(得分:0)
听起来问题是您运行的JVM没有附加任何标准输出。就像在Windows上一样,使用javaw.exe来运行jar(这是默认的,要小心)。如果从控制台运行Java.exe,则Java.exe输出到控制台窗口,但javaw.exe不会。如果您从文件资源管理器窗口运行该程序,即使您使用的是java.exe,仍然也不会获得任何标准,因为它被Windows隐藏。
因此,在命令行窗口中运行该程序,并使用java.exe,而不是javaw.exe。