我不明白为什么在这种情况下程序可以正常工作:

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分配相同的值。

09-11 19:20
查看更多