3

这是我的第一篇文章。我对这个社区的一部分感到很兴奋,并且我已经为这个问题苦苦挣扎了一段时间,所以这里是:

在以下代码中:

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

任何帮助将不胜感激和欢迎。

4

5 回答 5

5

System.out.print()不打印换行符。

你正在输出一堆东西,然后用System.out.println(). 这会导致光标下降到下一行。

如果你想要一个空行,你需要另一个。

编辑添加:我错过了你的for循环条件是......与你正在打印的数组不同的事实。你的意思是这样吗?

此外,由于您可能正在打印不可打印的字符,因此您完全有可能导致终端处于换行符不再工作的状态。

归根结底,println()没有坏掉。要么它没有被调用,要么你在调用它时没有看到换行符,那么终端处于它不再识别它的状态。

于 2012-12-15T06:08:58.697 回答
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 .
于 2012-12-15T06:08:49.210 回答
1

查看

http://docs.oracle.com/javase/6/docs/api/java/io/PrintStream.html#println ()

您可能需要System.out.print('\n')

于 2012-12-15T06:09:52.680 回答
1

我对此感到担忧:

System.out.print((char)cipherData[i]);

假设这cipherData是一个字节数组,那么将一个字节转换为 achar并通过字符流打印它不太可能给出漂亮的结果。首先,小于十进制 32 的字节将映射到 ASCII“控制字符”。

而且您可能正在打印错误的数组......或使用错误数组的长度。

(但是对您的问题的解释是,您需要再次调用println以成为空白行。第一个 println 只是终止包含密码数组中... umm ...“字符”的行。)

于 2012-12-15T06:15:12.897 回答
0

听起来问题是您运行的 JVM 没有附加任何标准输出。就像在 Windows 上一样,使用 javaw.exe 运行 jar(这是默认设置,请注意)。Java.exe 输出到控制台窗口,如果您从控制台运行它,但 javaw.exe 不会。如果你从文件资源管理器窗口运行程序,即使你使用的是 java.exe,你仍然不会得到任何标准输出,因为它被窗口隐藏了。

因此,在命令行窗口中运行程序,并使用 java.exe,而不是 javaw.exe。

于 2012-12-15T06:25:16.143 回答