“IllegalFormatConversionException: d != java.lang.String” 当用 0 填充数字时?

2022-09-02 09:39:34

我昨天有一个完美的代码,确切的形式是:

int lastRecord = 1;
String key = String.format("%08d", Integer.toString(lastRecord));

这将很好地填充它以00000001。

现在,我用 twoKeyChar 从表中获取字符串,lastRecord 从表中获取 int,将其提升了一个档次。

如您所见,概念本质上是相同的 - 我将int转换为字符串,并尝试用0s填充它;但是,这次我收到以下错误:

java.util.IllegalFormatConversionException: d != java.lang.String

代码如下:

String newPK = null;
String twoCharKey = getTwoCharKey(tablename);
if (twoCharKey != null) {
     int lastRecord = getLastRecord(tablename);
     lastRecord++;
     //The println below outputs the correct values: "RU" and 11. 
     System.out.println("twocharkey:"+twoCharKey+"record:"+lastRecord+"<");
     //Now just to make it RU00000011
     newPK = String.format("%08d", Integer.toString(lastRecord));
     newPK = twoCharKey.concat(newPK);
}

我觉得我一定是打错了什么,因为自从上次工作以来,它就没有理由坏掉。任何帮助/提示都是值得赞赏的!谢谢!


答案 1

您不需要 :Integer.toString()

 newPK = String.format("%08d", lastRecord);

String.format()将进行转换和填充。


答案 2

它对我有用,这里应该是整数,12应该是整数。

String.format("%04d", Integer.parseInt("12"));

输出 - 0012