玉开 2012-05-11 09:49
浏览 242
已采纳

java格式化问题

代码是这个样子的:
[code="java"]
String[] formats = {
"%1$-9d",
"%1$#5X",
"%1$+9d",
"%1$09d",
"%1$,9d",
"%1$(9d"
};

//java中没有foreach关键字,但可以用for (type varname : iterable)实现foreach
for(String format : formats)
{
int num = -9999999;
String formated = String.format(format,num);

System.out.println(formated);

String output = String.format("String.format(\"%1s\",%2$d) == \"%3s\"",
format,
num,
formated
) ;
System.out.println(output);
}
[/code]
输出如下:
-9999999
String.format("%1$-9d",-9999999) == "-9999999"
0XFF676981
String.format("%1$#5X",-9999999) == "-9999999"
-9999999
String.format("%1$+9d",-9999999) == "-9999999"
-09999999
String.format("%1$09d",-9999999) == "-9999999"
-9,999,999
String.format("%1$,9d",-9999999) == "-9999999"
(9999999)
String.format("%1$(9d",-9999999) == "-9999999"

可以看到formated是正确格式化的结果,而最后的完整输出中==后面的字符串是错误的,为什么?谢谢

  • 写回答

1条回答 默认 最新

  • _1_1_7_ 2012-05-11 10:18
    关注

    [quote]参数索引
    参数索引是一个十进制整数,用于表明参数在参数列表中的位置。第一个参数由 "1$" 引用,第二个参数由 "2$" 引用,依此类推。
    [/quote]

    "String.format(\"%1s\",%2d) == \"%3s\""
    去掉$符号就可以了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?