2013-09-22 7 views
0

저는 아직 자바를 배우면서 간단한 "번역"프로젝트를 만들고 있습니다. 그러나 무언가가 잘못되어 많은 시간을 보냈지 만 그것을 고치는 방법을 여전히 모르고 있습니다. 코드는 다음과 같습니다.대체 코드는 편도로 작동하지만 역순으로 작동하지 않습니다.

public static void main(String[] args) 
{ 

    char[] abcCode = {'!','@','#','$','%','^','&','*','(',')','_','-','+','=','|','`','~','}','{','[',']','"',';',':','>','<','?','/','\''}; 

    char[] numCode = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','x','y','z'}; 


    String src = args[0]; 
    String result = ""; 


    for(int i=0; i < src.length();i++) 
    { 
    char ch = src.charAt(i); 
    if ('a' <= ch && ch <= 'z') 
    result += abcCode[ch-'a']; 
    else if (abcCode[0] <= ch && ch <= abcCode[15]) 
    result += numCode[ch-abcCode[0]]; 

    } 

    System.out.println("src: "+src); 
    System.out.println("result: "+result);}} 

예를 들어 "lol"을 입력하면 "- | -"이 표시됩니다. 그러나 그 반대는 절대로 작동하지 않습니다. 나는 - | -을 입력하고 "lol"을 얻으려고합니다. 또한 "@"과 몇 가지 다른 문자를 입력하면 오류가 발생합니다. 뭐가 문제 야? 어떤 불빛?

답변

0

문제는 abcCode 배열에 숫자로 변환 할 때 한 값에서 시작하지 않고 연속 요소에서 하나씩 올라가는 것으로 채워지는 것입니다. 난 그냥 배열의 선언 뒤에 다음 코드를 넣어 :

for (char c: abcCode) 
    { 
    System.out.println(c - args[0].charAt(0)); 
    } 
    return; 

다음과 같은 출력을 가지고 :

-91 -60 -89 -88 -87 -30 을 -86 -82 -84 -83 -29 -79 -81 -63 -28 0 -1 -64 -61 -77 -85

-33 -31 -90 -65 -66 -62 은 (출력 내에서, 각각의 번호는 위에 있었다 다른 행을 사용하지만 여기에 답을 강요하는 방법을 잊어 버렸습니다.)

볼 수 있듯이 결과 숫자는 다른 배열에 유효한 인덱스가 아닙니다.

관련 문제