2017-02-15 57 views
0

我對加密非常好奇,於是我出去給自己做了一些小小的任務,加密一條消息(在我的.txt文件中)。我沒有得到我想要的輸出,我只得到第一列。爲什麼只打印第一列?爲什麼我的數組不打印剩下的列?

這是我的java文件:

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是:

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僅限於陣列列長度的大小,即從04。 對於主意,試試這個:

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

這部分有問題

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

你只從j填充字符= 0到j = 5作爲您的字符數組的大小爲5的(也就是你檢索該行的前5個字符)。我不確定你想要做什麼,因爲5X5的角色陣列不是答案。

如果您的txt文件具有行分隔符,您可以使用它們並將每個單詞讀入一個字符串並獲得一個字符串數組。

我在此留下解釋,因爲我無法解決問題

相關問題