我必须使用String Reader类通过char读取String char。我写了这段代码:
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());
}
循环不是无限的......但它会跳过一些字符......我怎样才能读取所有字符串?
答案 0 :(得分:0)
试试这个:
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();
答案 1 :(得分:0)
ready
method会告诉您下次调用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
或将其包装在{{1}中}}
Scanner
或
BufferedReader bf = new BufferedReader(stringReader);