我有这个循环,它不会停止它应该,它只发生在我的生产服务器上,而不是在我的开发服务器上。所以我疯了。
//objectName can be any value from [a-}],
char objectName = 'a'; //objectName is initialized with value 'a'
//before objectName hit the line below, it was increment objectName++; until the value of
//objectName = '}'
for( char c = objectName; c <= 'z'; c++ ){
//do something
}
objectName可以是任何字符但在我的情况下我知道我的objectName将是“}”字符,这在技术上比'z'更多。所以我不明白为什么我的循环仍在执行。
有趣的是我们有使用JAVA 1.6.0_30的测试服务器,我们在那里尝试测试,它工作得很好。
My Dev Server使用:java 1.6.0_45 我的Prod服务器使用:java 1.6.0_30
如果您发现我的逻辑有任何问题,请告诉我,任何情况都会使我的循环活跃,即使它不应该让我知道。
答案 0 :(得分:0)
在你的问题中,你说“我有这个循环,它不会停止它应该......”何时应该停止?当条件变为false
时,循环正在退出。基本上是10 >= 35
。
首先,'}'
“技术上”如何超过'z'
?
'}'
相当于-1,'z'
相当于正数35。
使用您未注释的代码,您将按预期循环26次(使用char 'a'
&amp; char 'z'
)。
'a'
相当于10,'z'
相当于35。
您可以使用Character.getNumericValue()
char objectName = 'a';
for( char c = objectName; c <= 'z'; c++ ){
//System.out.println("test");
}
产生与以下相同的结果:
for( int i = 10; i <= 35; i++ ){
//System.out.println("test");
}
除非我遗漏了某些东西,否则这似乎是一种过于复杂的方式来实现一个非常简单的结果。
我会要求澄清一些事情,但我不能发表评论。
答案 1 :(得分:0)
我不是专家,所以我可能在这里错了,但是使用字符迭代for循环对我来说看起来很陌生,可能不是最好的事情。
我建议使用数组/(数组)字符列表并以这种方式遍历列表,或者通过获取字符的数值来表示@Chris说明
for(int i = Character.getNumericValue(objectName); i <= Character.getNumericValue('z'); i++)
{
//System.out.println("test");
}
就像我说的那样,我不是专家,但使用数字来迭代循环似乎是一种更好的做法,或者至少是一种更稳定的做法。