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

对于字符串名称 =“昵称”,向我显示:

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

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

我试图理解这一点。

问题是entry.getKey()返回与我的字符串名称相同的内容,但并不完全相同。在第一次测试中,我们看到两个 var 不同,所以打印了,但是两个 var 的值相同,长度不同。在 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);

返回始终为空

查询字符串是:

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 回答
0

我认为如果你反转你的 if 子句,你可能会得到一些行为更像你所期望的东西,尽管你在问什么有点不清楚。比较键作为 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");
}
于 2013-04-01T16:21:36.107 回答