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(). これにより、カーソルが次の行に移動します。

その後に空白行が必要な場合は、もう 1 つ必要です。

追加する編集: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、バイトを にキャストしcharて文字ストリームを介して出力しても、きれいな結果が得られる可能性は低くなります。まず、10 進数で 32 未満のバイトは ASCII の「制御文字」にマップされます。

また、間違った配列を印刷している可能性があります...または間違った配列の長さを使用している可能性があります。

(しかし、あなたの問題の説明はprintln、空白行になるためにもう一度呼び出す必要があるということです。最初のprintlnは、暗号配列からの...うーん...「文字」を含む行を終了するだけです。)

于 2012-12-15T06:15:12.897 に答える
0

問題は、標準出力を接続せずに JVM を実行したことのようです。Windows と同様に、javaw.exe を使用して jar を実行します (これがデフォルトです。注意してください)。Java.exe をコンソールから実行すると、コンソール ウィンドウに出力されますが、javaw.exe は出力されません。ファイル エクスプローラー ウィンドウからプログラムを実行すると、java.exe を使用していても、標準出力はウィンドウによって隠されているため、標準出力を取得できません

そのため、コマンド ライン ウィンドウでプログラムを実行し、javaw.exe ではなく java.exe を使用します。

于 2012-12-15T06:25:16.143 に答える