2014-01-28 126 views
0

我明天有一個項目,我仍然無法弄清楚。在閱讀我的在線教科書以獲取有關凱撒密碼和加密的信息之後,我仍然不知道該怎麼做。我是編程新手,所以大部分代碼都不在我的聯盟atm中,但是這個項目在學期只有三個星期的時候似乎已經進步了。凱撒密碼計劃

以下是說明: 您的任務是實施凱撒密碼。您的密碼必須帶有兩個命令行參數,即未加密的消息 和移位量k。您的代碼將通過逐個移動每個字母,將未加密的消息轉換爲加密的消息 。然後它應該在屏幕上打印新的加密的 消息。大寫字母在轉換期間應保持大寫,小寫字母應保持較低的值。另外,確保空格完全不變。如果你可以考慮其他標點符號而不是 被改變,那麼它被認爲是「超越」。

我該如何着手啓動這個項目,並且可以將它解釋給有3周編碼經驗的人。

回答

1

這是作業,所以你可能不會得到很多完整的答案。但是這裏有一些一般的指導:

1 - 空間被提及。所以你需要把你的輸入作爲一個單一的字符串,然後將其分解(拆分)成一個單詞數組。這將是您滾動的主數組,當此循環完成時,您的程序完成。

2 - 現在你需要把你的元素(這是單個單詞)和每個字母處理它們。您需要遍歷每個單詞的字符並應用移位(k)

3 - 一旦完成,您需要「重新組裝」您的短語,但在主數組中的每個單詞之後添加一個空格。將其作爲「加密」消息輸出到屏幕上。

1

創建一個包含要加密的字符的數組(順序無關緊要)。在java中查找%運算符,並使用它爲輸入字符串中的每個項目計算加密值。

實施例的僞代碼

  1. 發現在陣列正常指數(處理的情況下和特殊字符)
  2. 使用array.length%K
  3. 使用查找一個新的「加密的」值計算偏移索引偏移指數

您可能會發現Character類有用。

2

第1步 創建您的字母。

char[] alphabet = {'A', 'B', 'C', ... , 'X', 'Y', 'Z'}; 

步驟2

改變你的明文。假設args [0]是您的原始消息,並且從命令行傳入的args [1]是您的換檔。

char[] plaintext = args[0].toCharArray(); 
int shift = args[1]; 

for(int i = 0; i < plaintext.length; i++) { 
    for(int j = 0; j < alphabet.length; j++) { 
     if(alphabet[j] == plaintext[i]) { 
      plaintext[i] = alphabet[(j + shift) % alphabet.length]; 
     } 
    } 
} 

步驟3

把你轉移字符數組轉換回字符串和輸出答案。

String ciphertext = new String(plaintext); 
System.out.println(ciphertext); 
1

您需要查看:

  • Scanner類在命令行中讀取參數
  • java.lang.String中的類轉字符的字符串成單獨的字符數組元素
  • 遞增和遞減字符以將3加密或將3減去解密。

參見增加角色本教程:https://stackoverflow.com/questions/2899301/how-do-i-increment-a-variable-to-the-next-or-previous-letter-in-the-alphabet-in

這是一個開端類一個艱難的項目。

看看這個小程序,我展示瞭如何將字符從小寫字母a增加到小寫字母b。

public class alphabet { 
     public static void main(String[] args) { 
      char a = 'a'; 
      System.out.println("a currently equals: " + a); 
      System.out.println("++a now equals: " + (++a)); 


     } 

}