2017-02-15 8 views
0

私は外出してメッセージを暗号化するために少し仕事をしました(私の.txtファイル)。私は私が望む出力を得ていない、私は最初の列を取得しています。最初の列だけを印刷するのはなぜですか?配列が残りの列を印刷しないのはなぜですか?

import java.io.*; 

public class EncryptDecrypt { 

    public static void encrypt() throws IOException { 
     BufferedReader in = new BufferedReader(new FileReader("cryptographyTextFile.txt")); 
     String line = in.readLine(); 

     char[][] table = new char[5][5]; 

     // fill array 
     for(int i = 0; i < table.length; i++) { 
      for(int j = 0; j < table.length; j++) { 
       table[i][j] = line.charAt(j); 
      } 
     } 

     // print array 
     for(int i = 0; i < table.length; i++) { 
      for(int j = 0; j < table.length; j++) { 
       System.out.println(table[i][j]); 
      } 
      System.out.println(); 
     } 
    } 

    public static void main(String[] args) throws IOException { 
     encrypt(); 
    } 
} 

マイ.txtファイルが含まれています:

E5NOWISTHEWINTEROFOURDISCONTENT* 

マイoutputは次のとおりです。

E 
5 
N 
O 
W 

私は私のoutputになりたい:

ここ

は私のjavaファイルです

E I T W O O D 
5 S H I F U I 
N E N R S 
O  T  C 
W  E  O 
     R  N 
      T 
      E 
      N 
      T 
+0

から多くを作ることができなかったように私はここでの説明を残しています。暗号化と復号化を行うアルゴリズムを作成してから、テキストを暗号化または復号化するロジックを実装する必要があります。このテキストが最初の列に、次のテキストが次の列に入るように指定するための区切り文字です。 詳細については、http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/CryptoSpec.htmlを参照してください。 – Maverick

+0

@Leozeo私はあまりにも派手なものは必要ありません今のところ。何かシンプルなのは、このコラムを列で読んで、私の元の投稿に言及したようにそれを印刷します。 – yabva89

答えて

0

これは、行に沿って繰り返しているためです。 forループ、行に沿ってtable.length移動(つまり垂直である)で 、table[0].lengthが列に沿って反復します一方、それは、単一の行にある(水平方向)

だから、あなたはあなたのループを変更することがあります。

for(int i = 0; i < table.length; i++) { 
    for(int j = 0; j < table[i].length; j++) { 
     //your code here 
    } 
} 

また、文字列に別のカウンターが必要です。 jの値は、配列の列の長さのサイズに制限されます。つまり、0から4です。 アイデアについては、これを試してみてください。

String line = in.readLine(); 
int cnt = 0; 
for(int i = 0; i < table.length; i++) { 
    for(int j = 0; j < table[i].length; j++) { 
    while(cnt<line.length()){ 
     table[i][j] = line.charAt(cnt); 
     cnt++; 
    } 
    } 
} 
+0

あなたは何を言っているのか分かります。私はあなたが言ったことを試してみましたが、私が得ているのは、私が元の投稿に投稿した出力です。 – yabva89

+0

私はちょうどあなたがループの助けが必要だと思った。私はいくつかの指針で編集しました。私はこれが役立つことを願っています –

0

この部分は、あなたが唯一のJから文字を埋めている

for(int i = 0; i < table.length; i++) { 
      for(int j = 0; j < table.length; j++) { 
       table[i][j] = line.charAt(j); 
      } 
     } 

問題を持っているあなたのchar配列のサイズが5であるとして= 0 jに5(あなたがいます=その行の最初の5文字を​​取得します)。私は5X5の文字配列として何を達成しようとしているのかは分かりませんが、答えはありません。

txtファイルに行区切り文字がある場合は、それらを使用して各単語を文字列に読み込み、文字列を配列できます。

私はあなただけの場で何かを選択することができ、質問

関連する問題