public class ThirdJavaForC
{
 public static void main(String[] args)
  {
   System.out.printf("%s! 这是你 %d 个Java程序!\n", "C++语言fan",3);
   }


public class ThirdJavaForC
{
 public static void main(String[] args)
  {
   System.out.printf("%s! 这是你 %b 个Java程序!\n", "C++语言fan",3);
   }

把%d换成%b为什么在命令符模式下编译会有不同的编译结果

解决方案 »

  1.   

    %d代表格式化输出数字,你后面传入的是3
    %b代表格式化输出布尔型,所以会输出true
      

  2.   

    System.out.printf("%b", false); 输出false
      

  3.   

    详细解释:第一个占位符%s,用传入的第一个参数“C++语言fan”替换掉了,但是第二个占位符是%d,所以代表格式化的第二个参数是数字,你第一个例子传入的是数字3,没问题,但是第二个例子中换成%b后,代表格式化的第二个参数要求是布尔类型参数,所以你传入数字3,他无法格式化,所以用了默认的true来进行输出。