java占位符对应的类型

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代表不同的日期与时间转换符  
posted @ 2021-01-08 14:47  涸辙  阅读(299)  评论(0)    收藏  举报