我必须使用字符串读取器类逐个字符读取字符串字符。我写了这段代码:
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);