gpt4 book ai didi

java - 为什么 StringReader.Read() 不返回字节?

转载 作者:行者123 更新时间:2023-12-01 07:15:25 25 4
gpt4 key购买 nike

我在数据结构作业(霍夫曼代码)中使用 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

最佳答案

事实上,这甚至无法编译。我得到:

Type mismatch: cannot convert from int to char

sr.read()调用返回一个 int 我建议您将其存储为这样。

编译(并按预期工作):

StringReader sr = new StringReader("This is a test string");
int i; // <-- changed from char
do {
i = sr.read();

// ... and if you need a char...
char c = (char) i;

} while (i != -1); // <-- works :-)
<小时/>

Why doesn't StringReader.Read() return a byte?

字符串由 16 位 unicode 字符组成。这些不适合 8 位字节。有人可能会说 char 就足够了,但是没有空间来提供已达到 EOF 的指示。

关于java - 为什么 StringReader.Read() 不返回字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4182844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com