0

スクリプトで発生した問題をデバッグしようとしています。Java を初めて使用しています。これは最も簡単なことだと思いますが、理解する必要があります。これ :

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");
     } 
}

String name = "nickname" の場合、次のように表示されます。

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

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

私はこれを理解しようとしています。

問題はentry.getKey()、文字列名と同じものを返すことですが、実際には同じではありません。最初のテストでは、2 つの変数が異なることがわかったので、出力は行われますが、2 つの変数は同じ値を持ち、同じ長さではありません。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行目私が持っているこのforループは、デバッグするためだけのものです

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

常に null を返します

クエリ文字列は次のとおりです。

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

2 に答える 2

1

の違い

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

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

ですtrim()

前者はスペースを考慮し、後者は考慮しません。

それは、それらがマップ上のループであるためです:「悪い」キーを見つけるために...

于 2013-03-30T18:09:10.023 に答える