【发布时间】:2017-09-11 18:52:45
【问题描述】:
我不明白为什么在这种情况下程序可以正常工作:
do {
i = f1.read(); // i is integer
j = f2.read(); // j is integer
if (Character.toLowerCase(i) != Character.toLowerCase(j)) break;
} while (i != -1 && j != -1);
但在这种情况下,程序会无限期地执行:
do {
i =(char) f1.read();
j =(char) f2.read();
if (Character.toLowerCase(i) != Character.toLowerCase(j)) break;
} while (i != -1 && j != -1);
我知道 int 到 char 可以隐式转换,但如果我显式转换 - 它不起作用,为什么? 还是我理解错了?
【问题讨论】:
-
呃,你在
while循环中比较i != -1。但是i是char... -
请提供一个 minimal test-case 来演示该行为。
-
还要注意,问题不在于“无限执行”——这只是您的 while 循环的一个特性。问题(如果存在的话)只是您发现
Character.toLowerCase的行为有所不同。
标签: java char infinite type-conversion