2 sixping sixping 于 2016.03.25 17:28 提问

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)

4个回答

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.25 17:47
已采纳

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

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

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

wojiushiwo945you
wojiushiwo945you 回复SixPing: 说来惭愧,danielinbite说的才是对的String.format("公司雇员,年薪是¥%.2f。", salary);才是小数点保留两位,直接%f小数点后面是四位的。
2 年多之前 回复
sixping
sixping 感谢大神!!!
2 年多之前 回复
danielinbiti
danielinbiti   Ds   Rxr 2016.03.25 17:38
 public String getDescription() {
return String.format("公司雇员,年薪是¥%。2f。", salary);
}
这里用了中文句号了,改成英文
public String getDescription() {
return String.format("公司雇员,年薪是¥%.2f。", salary);
}


public String grtDescription() {
return "大学生,专业是"+major+"。";
}
方法名错了
public String getDescription() {
return "大学生,专业是"+major+"。";
}
yanggq1988
yanggq1988   2016.03.25 17:34

Persion.getDescription()的错误吧,把Person贴出来看看呗

crazy1235
crazy1235   Ds   Rxr 2016.03.26 16:17

grtDescription

------->

getDescription

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
不知道哪里错了,求指导
创建一个栈,将10、12、14入栈,输出栈顶元素,然后退栈,代码如下 #include const int size=10; class stack {     int stck[size];     int tos; public:     stack(int tos)     {tos=0;};     void push(int ch);     int pop();
刚学spring的问题
求看看spring的问题刚刚学习spring,在网上下的demo,感觉也对,就是不知道哪里错了
SPIN控件的使用问题
我的程序哪里错了为什么不能调节,,不知道哪里出错了,请大家看看,要写20字真是烦人
真心不知道哪里错了 。。。
大数加法计算器,各位能给个数据证明这个错了么。在NYOJ上就是WA,各种情况觉得自己考虑差不多了,郁闷中。。。 其中两个操作数必须是正数。首先输入一个是测试数据的组数,按回车。然后输入两个加数。中间用空格隔开。 #include #include #include int maxInt(int a,int b) { if(a > b) return a; else return
ajax错误解图
这个市我的ajax错误解图。不知道哪里错了
求帮助,哪里错了?
#include #include #include using namespace std; int main() { double a,b,c; double n,delta; cin>>n; double i; for(i=1;i { cin>>a>>b>>c; double x1,x2; delta=b*b-4*a*c; cout if (fabs(delt
插入字符串(不知道哪里错了)
字符串 第8题 【描述】 有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3。将substr插入到str中ASCII码最大的那个字符后面,若有多个最大则只考虑第一个。 【输入】 输入包括若干行,每一行为一组测试数据,格式为 str substr 【输出】 对于每一组测试数据,输出插入之
并查集不知道哪里出错了
package com.company; import java.util.*; public class Main{ //并查集 static int N, M;//N个数字,M个操作 static int[]bcj=new int[10001]; static Scanner sc=new Scanner(System.in); static int F...
编译通不过的文件
改文件在case 2那有个错误,但我不知道为什么错了,请高手指教
手写PE结构,提示不是有效的win32程序
自己模仿别人的写的,不知道哪里出错了,希望可以帮下