我遇到了这个程序,并且没有按照预期的方式行事。
public class StringTest
{
public static void main(String[] args)
{
String s = "Hello world";
for(int i = 0 ; i < s.length() ; i++)
{
System.out.write(s.charAt(i));
}
}
}
如果我们认为它应该打印Hello world但它什么都不打印。到底是怎么回事?有任何想法吗?提前谢谢。
答案 0 :(得分:12)
您想:System.out.print(s.charAt(i));
根据write
的{{3}}:
请注意,该字节写为给定;要编写将根据平台的默认字符编码进行翻译的字符,请使用print(char)或println(char)方法。
如您对问题的评论中所述,如果您真的希望使用write()
,则需要flush()
。
write(int)
无法打印任何内容的原因是因为它只会刷新\n
上的流以及当autoFlush
为真时。
public void write(int b) {
try {
synchronized (this) {
ensureOpen();
out.write(b);
if ((b == '\n') && autoFlush)
out.flush();
}
}
catch (InterruptedIOException x) {
Thread.currentThread().interrupt();
}
catch (IOException x) {
trouble = true;
}
}