2015-01-01 77 views
1

我正在做一個程序,我必須加密用戶輸入的字符串。 我可以對這些字母進行隨機排列,並讓a = c(隨機生成的字母)等等......但是我似乎無法做的一件事就是如果用戶給出的字符串中有空格。 所以,如果用戶輸入「加密這個字符串」,我會給出一個錯誤。 如何將空格字符放在我的數組中,以便在輸入時更改它?如何將空格字符放入數組元素中?

char [] arrayAlphabet; 
    arrayAlphabet = new char [26]; 
    for (int i=0; i<26; i++) 
    { 
     arrayAlphabet[i] = (char)('a' + i); 
    } 


    public static char [] createCipher(char [] arrayAlphabet, char [] cipherAlphabet) 
{ 
    List<Character> chars = new ArrayList<>(26); 
    for (char c = 'a'; c <= 'z'; c++) 
    { 
     chars.add(c); 
    } 
    Collections.shuffle(chars); 

    for (int i = 0; i<26; i++) 
    { 
     cipherAlphabet[i] = chars.get(i); 
    } 
    return cipherAlphabet; 

謝謝,任何幫助表示讚賞。

回答

2

取而代之的是與c = 'a'c <= 'z'循環,爲什麼不使用StringtoCharArray()代替:

public static char[] createCipher() { // You weren't using your parameters, so I removed them. You can add them back if you want 
    char[] chars = "abcdefghijklmnpoqrstuvwxyz ".toCharArray(); // Add more characters to this string if you need them 
    return shuffleArray(chars); 
} 

public static char[] shuffleArray(char[] array) { 
    Random rnd = new Random(); 
    for (int i = array.length - 1; i > 0; i--) { 
     int index = rnd.nextInt(i + 1); 
     char temp = array[index]; 
     array[index] = array[i]; 
     array[i] = temp; 
    } 
    return array; 
} 

(你還需要進口java.util.Random這個工作)

什麼"...".toCharArray()是否需要帶有所需字符的字符串,並將它們變成一個char數組;)。 shuffleArray()Fisher-Yates shuffle的一般實現,具體用於char[],這可能比將char[]轉換爲List<Character>並返回更快。 (從https://stackoverflow.com/a/1520212/837703實現)

(請注意,字符交換是一般一個很好的加密,如果你真的想保護一些信息。這是一個很好的鍛鍊,但。)

+0

它說ArrayUtils無法解決,但我已經導入了數組,列表,數組列表和集合。 – Herofire

+0

真的很感激時間和幫助 – Herofire

+0

@MichaelVu不客氣:)。我更新了我的答案。 –

相關問題