我正在尝试调试我在脚本上的问题,我刚接触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()
返回与我的字符串名称相同的东西,但不是真的相同。在第一次测试中,我们看到两个变量是不同的,因此打印已经完成,但是两个变量具有相同的值,并且长度不同。在else-if中,我试图删除空格但没有打印,所以这些94个字符在哪里?
代码,方法是否
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
答案 0 :(得分:1)
之间的区别
entry.getKey().equals("nickname")
和
entry.getKey().trim().equals("nickname")
是trim()
。
第一个考虑空格而第二个不考虑。
这是因为它们是地图上的循环:找到“坏”键......
答案 1 :(得分: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");
}