2016-01-16 48 views
0

我正在寫一個凱撒Cypher程序,但我無法弄清楚如何在我的字符數組中存儲空間。這裏是我的加密方法如何在char數組中存儲空間?

public static String encrypt(String msg, int shift) { 
    char[] list = msg.toCharArray(); 
    for (int i = 0; i < list.length; i++) { 
     // Shift letter 
     char letter = list[i]; 
     letter = (char) (letter + shift); 
     if (letter > 'z') { 
      letter = (char) (letter - 26); 
     } 
     else if (letter < 'a') { 
      letter = (char) (letter + 26); 
     } 
     else if (letter == ' ') { 
      letter = '\0'; 
     } 
     list[i] = letter; 
    } 
    // Return final string. 
    return new String(list); 
} 

回答

1

的空間是類似於任何其他字母字符:

char space[] = {' '}; 

myCharArray[i] = ' '; 
2

從字面上看,在回答你的問題是:

list[i] = ' '; 

然而,當你寫的代碼看起來相當壞了。提示:仔細思考:(!小寫)

  • 上發生了什麼不信的範圍az字符,

  • 此測試之前會發生什麼letter- if (letter == ' ') { ...

0

你有一個邏輯錯誤 - 你只在應用轉變比較後的信空格字符。你應該檢查角色是否是空格,然後只有當它是你想要移動的角色之一時才移動它(可能只是字母和數字)。

固定,你可以用同樣的方式你選擇了它:

if (letter == ' '){ 
    letter = ' '; 
} else { 
    //logic for shifting 
} 

但實際上這是不必要的。有

if (letter != ' '){ 
     //logic for shifting 
} 

而且真的這將是更合適,更合適的是這樣的:

if(shouldShift(letter)){ 
    //logic for shifting 
} 

哪裏shouldShift是一樣的東西:

public boolean shouldShift(char letter){ 
    return Character.isLetter(letter) || Character.isDigit(letter); 
} 
相關問題