System.out.println()不起作用

时间:2012-12-15 06:05:43

标签: java

这是我的第一篇文章。我对这个社区的一部分感到很兴奋,我一直在努力解决这个问题,所以这里有:

在以下代码中:

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() 方法根本不返回任何内容。没有线,或任何东西,我不知道为什么。目标是在上面打印字节数组后打印一个空行,如果条件为真则打印。

任何帮助都将非常感谢和欢迎。

5 个答案:

答案 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。

相关问题