【发布时间】:2014-07-08 00:47:22
【问题描述】:
我有这个循环,当它应该停止时它不会停止,它只发生在我的生产服务器上,而不是我的开发服务器上。所以我要疯了。
//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 的测试服务器,我们已经尝试在那里进行测试,它工作得很好。
我的开发服务器使用:java 1.6.0_45 我的产品服务器使用:java 1.6.0_30
如果您发现我的逻辑有任何问题,请告诉我,任何会使我的循环处于活动状态的情况,即使它不应该让我知道。
【问题讨论】:
-
你是如何部署到生产服务器的?任何可能改变字符编码的东西?如果
objectName是'}'而不是"}"会发生什么? -
@hexafraction 我认为
"}"是一个错字,好像它真的是String我不认为该片段会编译 -
老实说,我认为它不会与“}”一起编译。
-
objectName 的类型是什么?用“}”初始化它建议使用字符串,但然后你用它来初始化一个字符。
-
您可能会将 objectName 更改为其他名称,尝试硬编码您的 for 循环
char c = '}'并查看它是否有效?如果它没有循环,那么它可能不是你的循环问题。但是变量 objectName 可能会被意外分配到其他地方。