2017-12-16 14 views
0

암호화 기능이 UserInput의 단어 사이에있는 공백과 기호를 무시하도록하고 있습니다. isWhitespace 또는 무엇을 사용해야합니까? 어떻게 구현할 것인가?Caesar Cipher With Space 문자가 변경되지 않았습니다.

이 프로그램의 결과는 완전히 정확합니다. 각 문자를 다음 7 자리로 이동시킵니다. 그러나 그것은 공간이나 혼수 상태로 구분 된 2 단어의 이동을 허용하지 않습니다.

나는 세상에서 가장 근사한 자바입니다. & 나는 그것을 정말로 즐기고 있습니다! 그러므로 내가 시작한 이래로 제 3 주입니다.

+0

for 루프에서 건너온 ** 모든 ** 문자를 전 환하고 싶지는 않습니다. 거기에 if 조건이 필요합니다. 처음에 이것을 직접 만들어보고 무엇이 떠오르지 않는지보십시오. 또한 더 나은 형식의 게시 코드를 작성하십시오. –

답변

0

두 가지 방법이 있습니다. 문자에 대해 양수 일치를 만들거나 음수 일치를 만듭니다. 긍정적 인 성냥 이체에있는 경우에, 당신은 첫째로 유지하고 싶은 특성이 plainText.charAt(i)다는 것을 검사하고, 그 경우에 루프를 가진 cipherTextcontinue에 그것을 추가하십시오.

indexOf이 알파벳이 문자를 포함하고 있지 않음을 나타내는 -1을 반환하는지 다른 사람이 확인할 수 있습니다. 이 경우 동일한 작업을 수행하십시오. 추가하고 계속하십시오. 이것은 전형적인 Ceasar "play"암호에서 보았던 일반적인 방법입니다.

// introduce a local variable, you don't want to perform charAt twice 
char c = plainText.charAt(i); 
int charPosition = ALPHABET.indexOf(c); 
// if charPositions is -1 then it is not found 
if (charPosition == -1) { // or define a constant NOT_FOUND = -1 
    cipherText += c; 
    // continue with the for loop 
    continue; 
} 
+0

그것은 일했다. 펀치 고마워요! –