如何在 Java 中使用 StringReader 类读取字符串



我必须使用字符串读取器类逐个字符读取字符串字符。我写了这段代码:

String string = "Hello, World!";
StringReader stringReader = new StringReader(string);
while(stringReader.ready())
{
   System.out.println(stringReader.read());
}

但是循环不是以字符串的结尾结束的,它是无限的!为什么?

我也尝试这样做:

while(stringReader.read()!=-1)
{
   System.out.println(stringReader.read());
}

循环不是无限的...但它跳了一些字符...如何读取所有字符串?

试试这个:

    String str = "Hello, World!";
    //Create StringReader instance
    StringReader reader = new StringReader(str);
    int c = reader.read();
    while (c != -1){
        //Converting to character
        System.out.print((char)c);
        c = reader.read();
    }
    //Closing the file io
    reader.close();

ready 方法告诉您下一次对read的调用是否会阻止。

返回: 如果保证下一个 read() 不会阻塞输入,则为 true,否则为 false。

一旦你到达字符串的末尾

,它肯定不会阻塞;你已经到达了字符串的末尾。 有了String,内容就已经存在了;StringReader应始终返回true ready

当您每循环调用read两次时,您将跳过字符 - 一次在while条件下,一次在正文中。 改为将其分配给变量。

int c;
while((c = stringReader.read()) !=  -1)
{
    System.out.println((char) c);
}

你也可以做你通常做的任何其他类型的Reader - 把它包裹在一个BufferedReader,这样你就可以打电话nextLine或把它包装在Scanner中。

BufferedReader bf = new BufferedReader(stringReader);

Scanner strScanner = new Scanner(stringReader);

相关内容

  • 没有找到相关文章

最新更新