2013-03-30 4 views
0

나는 스크립트에서 문제를 디버깅하려고하는데, 나는 자바를 처음 사용했다. 가장 간단한 것 같지만 이해할 필요가있다. 이 : 문자열 이름 = "별명"를자바에서지도 엔트리 키

for(Map.Entry<String,int[]> entry : this.indexMap.entrySet()) 
{ 
    if(!entry.getKey().equals("nickname")) 
    { 
     System.out.print("'"+ entry.getKey() +"' contains "+ entry.getKey().length() +" chars"); 
     System.out.print("'"+ name +"' contains "+ name.length() +" chars"); 
    } 
    else if(entry.getKey().trim().equals("nickname")) 
    { 
     System.out.print("Yes are sames"); 
    } 
} 

, 즉 나에게 표시 :이 이해하려고 노력 중이 야

18:56:15 [INFOS] 'nickname' contains 94 chars 

18:56:15 [INFOS] 'nickname' contains 8 chars 

.

문제는 entry.getKey()이 내 문자열 이름과 동일한 것을 반환하지만 실제로는 동일하지 않습니다. 첫 번째 테스트에서 우리는 두 개의 덩어리가 다르다는 것을 보았습니다. 따라서 인쇄는했지만 두 개의 덩어리는 같은 길이가 아니라 같은 값을가집니다. else-if에서는 공백을 제거하려고했으나 인쇄되지 않았으므로이 94 개의 문자는 어디에 있습니까?

https://code.google.com/p/imdbparsers/source/browse/trunk/imdb+parsers/src/imdb/parsers/xmltosql/NamedParameterStatement.java?r=6

는 해당 방법이

private String parse(String query) 

private int[] getIndexes(String name) 

라인 (161) 내가 내에서했습니다 루프이 등 89 은 항상

int[] indexes = (int[]) indexMap.get(name); 

반환을 디버깅하는 것입니다있는 코드 null

쿼리 문자열 이다

SELECT COUNT(`account_id`) AS `total` FROM `game_accounts` WHERE `nickname`=:nickname 
+1

이렇게 웃음 소리를 사용하지 마십시오. 나는 다음 번에 당신이 이것을 돌볼 수 있도록이 주석을 달았습니다. –

+1

'name' 변수의 출처는 어디입니까? 이 코드는 나를 혼란스럽게합니다. –

+1

당신은 무엇을하려고합니까? –

답변

1

차이 trim()이다

entry.getKey().trim().equals("nickname") 

entry.getKey().equals("nickname") 

사이

.

첫 번째 공백은 두 번째 공백을 고려하지 않습니다.

가지도에 루프입니다 때문입니다

다음 '나쁜'키를 찾을 수 ...

+0

하지만 그의 첫 번째 문장은'! '연산자를 가지고 있습니다. 그의 모든 질문에 매우 혼란 스럽다. –

+0

예, 당신은 버그를 발견했습니다. 나는이 변수들과 상호 작용할 수 있습니다. – Aubin

+0

완전한 코드가이 변수들과 상호 작용할 수는 있지만 길기는합니다. 그것은 인터넷에서 발견 된 공개 코드 소스의 일부입니다. – Flozza

0

내가 생각하는 당신이 반대 경우 당신이 더 기대되는 것처럼 동작 뭔가를 얻을 수 있습니다 조항의 경우, 비록 당신이 무엇을 요구하고 있는지 다소 명확하지 않지만. if 블록의 첫 번째 절과 같이 키를 비교하면 코드가 더 간단 해집니다.

if(entry.getKey().trim().equals("nickname")) 
{ 
    System.out.print("Yes are sames"); 
} 
else 
{ 
    System.out.print("'"+ entry.getKey() +"' contains "+ entry.getKey().length() +" chars"); 
    System.out.print("'"+ name +"' contains "+ name.length() +" chars"); 
}