我在数据结构分配(霍夫曼代码)中使用 StringReader,并且正在测试是否已到达字符串的末尾。我发现 StringReader.read() 返回的 int 值不是 -1,而是 65535,因此将结果转换为字节解决了我遇到的无限循环问题。
这是 JDK 中的错误,还是将 Reader.read() 调用返回的值转换为字节的常见做法?还是我错过了什么?
我的代码的要点是这样的:
StringReader sr = new StringReader("This is a test string");
char c;
do {
c = sr.read();
//} while (c != -1); //<--Broken
} while ((byte)c != -1); //<--Works