开发者社区> 问答> 正文

java程序调错

不知道哪里错了,求指教
程序如下:

package com.Sixping.Ncre;
import java.util.*;
public class AbstractClassTest {
public static void main(String[] args) {
Person[] people=new Person[2];
people[0]=new Employee0("张浩", 50000, 1989, 10, 1);
people[1]=new Student0("李明", "计算机科学");
for(Person p:people){
System.out.println(p.getName()+","+p.getDescription());
}
}
}
abstract class Person{
public Person(String n) {
name=n;
}
public abstract String getDescription();
public String getName(){
return name;
}
private String name;
}
class Employee0 extends Person{
public Employee0(String n,double s,int year,int mouth ,int day){
super(n);
salary=s;
GregorianCalendar calendar=new GregorianCalendar(year ,mouth-1,day);
hireDay=calendar.getTime();
}
public String getDescription() {
return String.format("公司雇员,年薪是¥%。2f。", salary);
}
private double salary;
private Date hireDay;
}
class Student0 extends Person{
public Student0(String n, String m) {
super(n);
major=m;
}
public String grtDescription() {
return "大学生,专业是"+major+"。";
}
private String major;

}

错误信息:

Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = '。'
at java.util.Formatter.checkText(Formatter.java:2502)
at java.util.Formatter.parse(Formatter.java:2484)
at java.util.Formatter.format(Formatter.java:2413)
at java.util.Formatter.format(Formatter.java:2366)
at java.lang.String.format(String.java:2770)
at com.Sixping.Ncre.Employee0.getDescription(AbstractClassTest.java:34)
at com.Sixping.Ncre.AbstractClassTest.main(AbstractClassTest.java:11)

展开
收起
蛮大人123 2016-06-07 14:47:03 3409 0
3 条回答
写回答
取消 提交回答
  • 试试看:
    System.out.printf("%,f; %.3f; %,.3f", 12345f, 12345f, 12345f);
    结果是:
    12,345.000000; 12345.000; 12,345.000

    NumberFormat里面,逗号表示千分位,小数点后加数字表示控制小数的位数。
    提问者的思路是对的,不过是全角的。不能当做半角的.被识别。

    这个信息可以在Formatter类的doc里面看到,一般还是别看国内的blog吧。

    2019-07-17 19:30:11
    赞同 展开评论 打赏
  • 要学会定位出错信息,这是你的代码,34代表第34行:
    at com.Sixping.Ncre.Employee0.getDescription(AbstractClassTest.java:34)

    2019-07-17 19:30:11
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    问题就在你使用String.format错了,修正如下:

        public String getDescription() {
            return String.format("公司雇员,年薪是¥%f。", salary);
        }

    format的时候能够产生单纯的替换效果.用具体的值替换相应的转换符.转换符是固定的,而并没有%。这种,所以错误了。
    你需要显示的是浮点数的数据格式,所以直接用%f就可以了。
    详细的转换符及用法,参考:http://blog.csdn.net/cilen/article/details/7709488

    2019-07-17 19:30:11
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载