使用printf打印布尔值

12

我想使用 printf 打印一个 boolean 值,但我不知道怎么做。我想要的是类似于以下虚构代码:

boolean car = true;
System.out.printf("%b",car);

预期输出应该是:
true

我该怎么做?或者有其他方法可以得到预期的输出结果吗?


3
你的“假想代码”对我来说很有效。请详细说明你目前的问题是什么。 - Hovercraft Full Of Eels
3个回答

14

我猜测你遇到了缓冲问题,导致你的程序在缓冲清空之前退出。当你使用 printf()print() 时,如果没有换行符,它并不会立即清空缓冲区。你可以使用显式的 flush() 函数。

boolean car = true;
System.out.printf("%b",car);
System.out.flush();

或者添加一个换行符(这也会导致 flush() 被调用)

boolean car = true;
System.out.printf("%b%n",car);

另请参见Java教程-缓冲流刷新缓冲流的一部分内容如下:

某些缓冲输出类支持自动刷新,可以通过一个可选的构造函数参数来指定。启用自动刷新后,某些关键事件会导致缓冲区被刷新。例如,一个启用了自动刷新的PrintWriter对象在每次调用printlnformat时都会刷新缓冲区。


1
你的ESP能力比我的好多了。 - Hovercraft Full Of Eels
@HovercraftFullOfEels 可能是我喝的所有咖啡。此外,当我没有 flush() 时遇到了问题,而且我有一些代码会立即退出(不是用 boolean 而是用 printf())。但也可能是因为咖啡。 - Elliott Frisch

3

好消息是它输出了值为true,你的想象代码没有问题。或者,你也可以尝试

boolean car = true;
System.out.print(car);
System.out.printf("%b", car);

-1
boolean car =true;

System.out.println(""+car);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接