2017-11-09 30 views
0

안녕하세요, 인코딩 된 또는 오히려 디코딩 된 문자열, 매개 변수 키 (키 < 다음 0을 실행하면 디코딩 된 문자열을 반환하는 Java에서 간단한 인코딩/디코딩 방법을 가지고 부호화).Java는 인코딩/디코딩시 쓰레기로 문자열을 나누어

이 메서드는 다음 코드와 같이 void main에서 실행됩니다.

public static String rotate(String text, int key) 
{ 
    // Check if given key is in range -25 to 25 
    if (key < -42 || key > 42) 
     return ""; 

    if (key == 0) 
     return text; 

    char[] array = text.toCharArray(); 
    int k = key % 26; 

    // Check if every char of given text is in rang from 'a' to 'z' 
    // Use text as char array to manipulate each char 
    for (int i = 0; i < array.length; ++i) { 
     if (array[i] < 'a' || array[i] > 'z') { 
      return ""; 
     } 
     else { 
      if (key < 0) { 
       int j = (int)array[i] - k; 
       if (j < 'a') 
        array[i] = (char)(j+26); 
       else 
        array[i] -= k; 
      } 
      else { 
       int j = (int)array[i] + k; 
       if (j > 'z') 
        array[i] = (char)(j-26); 
       else 
        array[i] += k; 
      } 
     } 
    }  
    return array.toString(); 
} 

문제 회전 (..)으로 인해 어레이 같 있다는 "fhewhqcc"권리 이에 콘솔 인쇄 "

public static void main(String[] args) 
{ 
    System.out.println(rotate("programm", 42)); 
} 

내 부호화/복호화 방법은 다음과 같다 [C @ 123a439b ".

의견이 있으십니까?

+0

문자열이 아닌 문자 배열을 반환합니다. 따라서 인쇄 된 출력은 그와 같습니다. – inquizitive

+0

'array.toString()'을'new String (array)'로 대체하십시오. – shmosel

+0

여러분, 고맙습니다. 저는 C++에서 왔습니다. 자바에 익숙하지 않았습니다. –

답변

1

문자열이 아닌 문자 배열을 반환합니다. 따라서 인쇄 된 출력은 그와 같습니다. 다음과 같이 return 문을 변경해야합니다.

return new String(array);