java占位符对应的类型
今天我在练习数据结构的时候报了这样一个错误,
Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.String
at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4302)
at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2793)
at java.util.Formatter$FormatSpecifier.print(Formatter.java:2747)
at java.util.Formatter.format(Formatter.java:2520)
at java.util.Formatter.format(Formatter.java:2455)
at java.lang.String.format(String.java:2940)
at cn.leoeric.mymethod.RoomFriends.toString(RoomFriends.java:17)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at cn.leoeric.mymethod.Array01.toString(Array01.java:156)
at java.lang.String.valueOf(String.java:2994)
at java.io.PrintStream.println(PrintStream.java:821)
at cn.leoeric.mymethod.MyTest.main(MyTest.java:15)
然后我就查资料,原来是我在写占位符时候,把要传的参数和占位符的类型写错了,如下
private int bedCode;
private String name;
public RoomFriends(int code, String name) {
bedCode = code;
this.name = name;
}
@Override
public String toString() {
return String.format("RoomFriends(code: %s,name: %d)",bedCode,name);
}
原来是类型的问题,我这里把占位符的类型写错了,然后改回来就好了
改好的代码如下:
@Override
public String toString() {
return String.format("RoomFriends(code: %d,name: %s)",bedCode,name);
}
附上占位符代表类型表:
转 换 符 | 说 明 | 示 例 |
---|---|---|
%s | 字符串类型 | “mingrisoft” |
%c | 字符类型 | ‘m’ |
%b | 布尔类型 | true |
%d | 整数类型(十进制) | 99 |
%x | 整数类型(十六进制) | FF |
%o | 整数类型(八进制) | 77 |
%f | 浮点类型 | 99.99 |
%a | 十六进制浮点类型 | FF.35AE |
%e | 指数类型 | 9.38e+5 |
%g | 通用浮点类型(f和e类型中较短的) | |
%h | 散列码 | |
%% | 百分比类型 | % |
%n | 换行符 | |
%tx | 日期与时间类型(x代表不同的日期与时间转换符 |