我刚刚学习java 遇到一个问题 
System.out.println(String.format("%1$,09d", -777777));
此代码在办公室电脑可以正常输出,但是在家里的电脑上不行,提示如下:
Exception in thread "main" java.lang.Error: 无法解析的编译问题:
类型 String 中的方法 format(String, Object[])对于参数(String, int)不适用家里的电脑是2000服务器 myeclipse 7.5, 办公室是xp,myeclipse 6.5,都进行了汉化,请高手帮忙看一下原因!
先谢谢了!

解决方案 »

  1.   

    你家里jdk是不是1.5一下的啊,没有自动包装器
      

  2.   

    請確認jdk版本是否是1.5以上,如果是,應該不會出錯此種錯誤,與MyEclipse關係不大
      

  3.   

    我的jdk是1.6版本的,很是奇怪啊!
      

  4.   

    因为这个方法需要 JDK 5 以上的语言特性——变参支持,如果你装的是 JDK 6 的话,那说明你用的 IDE 的编译级别太低了。如果你用的是 Eclipse 的话,点击菜单中的:Window --> Preferences --> Java --> Compiler 把右边“Compiler compliance level:”调成 1.5 或者 1.6 就可以了。
      

  5.   

    PS 一下System.out.println(String.format("%1$,09d", -777777)); 这里只有一个参数,因此这里的 1$ 可加可不加。如果含有三个参数项,但是参数值只有两个,并且是第三个参数项要使用第一个参数的数据时就可以使用了:System.out.println(String.format("%02d, %03d, %1$,09d", -777777, 2)); 如果第三个参数项需要使用第二个参数的数据,可以写成这样:System.out.println(String.format("%02d, %03d, %2$,09d", -777777, 2));或者:System.out.println(String.format("%02d, %03d, %<,09d", -777777, 2)); 
      

  6.   

    应该是你JDK版本的问题。以下是Java API java.lang 类 String的format解释。这个方法需要JDK5.0以上。
    format
    public static String format(String format,
                                Object... args)使用指定的格式字符串和参数返回一个格式化字符串。 
    始终使用的语言环境是由 Locale.getDefault() 返回的语言环境。 
    参数:
    format - 格式字符串
    args - 在格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。参数是可变的并且可以为 0。参数的最大数目受《Java Virtual Machine Specification》所定义的 Java 数组的最大维度的限制。针对 null 参数的行为依赖于 转换。 
    返回:
    一个格式化字符串 
    抛出: 
    IllegalFormatException - 如果格式字符串中包含非法语法,与给定的参数不兼容的格式说明符,格式字符串给定的参数不够,或存在其他非法条件。有关所有可能的格式化错误的规范,请参阅 formatter 类规范的 Details 一节。 
    NullPointerException - 如果 format 为 null
    从以下版本开始: 
    1.5 
    另请参见:
    Formatter--------------------------------------------------------------------------------format
    public static String format(Locale l,
                                String format,
                                Object... args)使用指定的语言环境、格式字符串和参数返回一个格式化字符串。 参数:
    l - 在格式化过程中要应用的语言环境。如果 l 为 null,则不进行本地化。
    format - 格式字符串
    args - 在格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数,则忽略这些额外的参数。参数的数量是可变的,并且可以为零。参数的最大数目受《Java Virtual Machine Specification》所定义的 Java 数组的最大维度的限制。针对 null 参数的行为依赖于转换。 
    返回:
    一个格式化字符串 
    抛出: 
    IllegalFormatException - 如果格式字符串中包含非法语法,与给定参数不兼容的格式说明符,格式字符串给定的参数不够,或存在其他非法条件。有关所有可能的格式化错误的规范,请参阅 formatter 类规范的 Details 一节。 
    NullPointerException - 如果 format 为 null
    从以下版本开始: 
    1.5 
    另请参见:
    Formatter
      

  7.   


    我用的是myeclipse 7.5,具体应在哪里修改啊?谢谢!
      

  8.   


    MyEclipse 只是 Eclipse 的插件,这是 Eclipse 固有的功能,MyEclipse 不会把它去掉的!
      

  9.   

    new Integer(-777777)否则需要java执行的时候指定参数,反正还是环境的问题。