我正在尝试调试脚本中的问题,我刚接触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");
}
}
对于字符串名称=“昵称”,向我显示:
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行
我在我的这个for循环只是为了调试
int[] indexes = (int[]) indexMap.get(name);
返回始终为null
查询字符串是:
SELECT COUNT(`account_id`) AS `total` FROM `game_accounts` WHERE `nickname`=:nickname
最佳答案
和...之间的不同
entry.getKey().equals("nickname")
和
entry.getKey().trim().equals("nickname")
是
trim()
。第一个考虑空格,第二个不考虑空格。
这是因为它们是地图上的一个循环:查找“坏”键...