我不明白为什么在这种情况下程序可以正常工作:
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,但是如果我将其显式转换-它不起作用,为什么呢?
还是我听错了?
最佳答案
char
永远不能等于-1(这是无符号类型),因此,当您输入-1并将其强制转换为char
时,它将变为正数,并且永远不会满足循环的结束条件。
即
int i = -1;
和
int i = (char) -1;
不要为
i
分配相同的值。