java中用print函数的输出问题。

如果想在java中用printf函数输出字符串“%d”,如何实现,为什么。还有请解释一下以下代码的执行结果。
import java.util.*;
public class q{
public static void main(String[] args){
Formatter f = new Formatter(System.out);
System.out.printf("%%");
System.out.printf("%");
}
}

用printf输出"%d",可以这样printf("%s","%d"); 这个是对的,本人亲测
// 定义一些变量,用来格式化输出。
05 double d = 345.678;
06 String s = "你好!";
07 int i = 1234;
08 // "%"表示进行格式化输出,"%"之后的内容为格式的定义。
09 System.out.printf("%f", d);// "f"表示格式化输出浮点数。
11 System.out.printf("%9.2f", d);// "9.2"中的9表示输出的长度,2表示小数点后的位数。
13 System.out.printf("%+9.2f", d);// "+"表示输出的数带正负号。
15 System.out.printf("%-9.4f", d);// "-"表示输出的数左对齐(默认为右对齐)。
17 System.out.printf("%+-9.3f", d);// "+-"表示输出的数带正负号且左对齐。
19 System.out.printf("%d", i);// "d"表示输出十进制整数。
21 System.out.printf("%o", i);// "o"表示输出八进制整数。
23 System.out.printf("%x", i);// "x"表示输出十六进制整数。
25 System.out.printf("%#x", i);// "#"表示输出带有十六进制标志的整数。
27 System.out.printf("%s", s);// "s"表示输出字符串。
29 System.out.printf("输出一个浮点数:%f,一个整数:%d,一个字符串:%s", d, i, s);
30 // 可以输出多个变量,注意顺序。
32 System.out.printf("字符串:%2$s,%1$d的十六进制数:%1$#x", i, s);
33 // "X$"表示第几个变量。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-13
java里好像是没有printf函数的,输出的格式是System.out.print(".....");
你要输出%d,只要System.out.print("%d");即可。
这段代码是有错误的,import java.util.*;这句可以去掉。
输出语言System.out.print("%%");
如果你要换行,则System.out.println("%");
如果修改后执行结果是
%%
%追问

首先,从javaSE5以后,java里面就有printf函数了
其次,加入import java.util.*一句是为了使用Formatter类,不加则报错,这里我是在做过其他试验后忘记删除这两句了
再者,我知道用System.out.println("%d");可以输出字符串“%d”,但我想知道的是如何通过System.out.printf()方法输出
最后,改程序编译不会报错,第一个输出的结果是一个百分号,第二个输出语句会出现异常UnknownFormatConversionException
我想知道为什么

追答

这里的printf函数可能跟C语言里的printf函数类似的吧。
一个%会让编译器等待你所输出数据的类型,所以有错误。
求探讨

追问

如果对java感兴趣的话,我们可以一起探讨。我的QQ号:1107948053。但是这个问题我还是不知道如何解释。刚刚看《java编程思想》上面看到相关问题,然后就试验了一下,结果就不知道如何解释了。既然是C语言风格的,那么就可以用"%d"来给一个整数占位,后面带一个整形的参数,就可以输出一个整数。而现在我想用该函数输出"%d"字符串,不知道如何操作了。我试过用转义字符“\”,还是不行……求高人……

追答

我的QQ773467459,你加我吧,你的有问题呢

第2个回答  2011-12-13
用printf输出"%d",可以这样printf("%s","%d");本回答被提问者采纳
第3个回答  2011-12-14
System.out.println("%")您这样是输出一个“%”字符串,输出时没有任何问题的。
当然你要是输出像System.out.println(“\t")在控制台上是看不到任何效果,你可以这样尝试System.out.println(“\\t")
相似回答