2015-01-01 3 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; 

감사합니다. 도움을 주시면 감사하겠습니다.

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() 대신 String의 사용 대신 c = 'a'c <= 'z'와 for 루프의

답변

2

, "...".toCharArray()은 원하는 문자로 문자열을 가져와 char 배열로 바꿉니다. shuffleArray()char[]에 대해 Fisher-Yates shuffle을 일반적으로 구현 한 것으로 char[]List<Character>으로 변환 한 다음 다시 변환하는 것보다 빠릅니다.

이 (https://stackoverflow.com/a/1520212/837703에서 구현) (당신이 실제로 몇 가지 정보를 보호하려는 경우 해당 문자 스와핑을 참고 하지 일반적으로 좋은 암호화입니다. 그것은 비록 좋은 운동입니다.)

+0

그것은 ArrayUtils 말한다 해결할 수 없습니다, 나는 배열, 목록, arraylists 및 컬렉션을 가져 왔습니다. – Herofire

+0

정말 시간과 도움을 주셔서 감사합니다 – Herofire

+0

@MichaelVu 당신은 환영합니다 :). 나는 나의 대답을 업데이트했다. –

관련 문제