2012-04-05 5 views
2

가능한 중복은 :
ROT-13 function in java?시프트 문자

I는 알파벳 문자열에서 13 곳을 모든 문자를 이동해야

private static String encode(String line) { 
    char[] toEncode = line.toCharArray(); 
    for (int i = 0; i < toEncode.length; i++) { 
     if (Character.isLetter(toEncode[i])) { 
      toEncode[i] += 13; 
     } 
    } 
    line = String.valueOf(toEncode); 
    return line; 
} 

문제가 있다는 것입니다 예를 들어 'z'는?에 도착합니다. 어떻게 해결할 수 있습니까?

도움이 필요하시면 Thx.

+3

-1 숙제 질문 찬드라 Sekhar @ –

답변

4

'z'다음의 다음 문자는 문장 부호 등으로 인해 발생합니다. 예를 들어, 'z'가 'n'이되도록 시프트 할 수 있습니다.

toEncode[i] = (toEncode[i] + 13 - (int)'a') % 26 + (int)'a'; 
+0

이 스레드는 꽤 오랫동안 여기에 있었지만 나중에 참조 할 수 있도록이 스레드를 게시 할 가치가 있다고 생각했습니다. 나는 당신이 당신의 공식에 오타가 있다고 생각합니다. 그게 ... 25 %가 아니라 ... 26 %? 우리는 'z'가 'a'로 이동하고 'b'로 이동하지 않기를 원하기 때문입니다. – cottonman

+0

아, 네 말이 맞아. 저는 실수로 알파벳이 25 글자로 구성되어 있다고 가정합니다. – pepyakin

0
System.out.println(('z'+ (char)13)); //output -135 
System.out.println((char)('z'+ (char)13)); //output - ? 
+0

: 대답을 주셔서 감사합니다 '숙제'질문에 대한 설명과 안내 지침을 추가하십시오. – Jayan

0

계산 된 문자가 마지막 문자 (z => 122 또는 z => 90)보다 큰 경우 계산 된 값의 마지막 문자의 값을 뺍니다. 인터넷상의 모든 번호를 찾을 수 있습니다 (예 : here.