各位高手看看,最后输出有问题,我不知道哪错了,看了半天,请教下,谢谢了这是题目。题目是创建Comic实现存储图书的名称,编号,基价和新旧程度。其中新旧程度被描述为:崭新(mint),九成新(near mint),
很新(fine),一般(good),很旧(poor).
在此类中实现为图书设定价格的方法。价格根据新旧程度和基价进行设定,每种情况下对价格的影响如下:
崭新:价格为基价的3倍;
九成新:价格为基价的2倍;
很新:价格为1.5倍;
新价:格为基价;
一般:价格为基价的0.5倍;
很旧:价格为基价的0.25倍;import java.util.*;
public class Comic {
private String name;//书的名称
private int id; //编号
private double base; //基价
private String xinjiu;//新旧程度
public Comic(String name,int id,double base,String xinjiu){
this.name=name;
this.id=id;
this.base=base;
this.xinjiu=xinjiu;
}
public String getName(){ //set get 方法
return name;
} public void setName(String name) {
this.name = name;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public double getBase() {
return base;
} public void setBase(double base) {
this.base = base;
} public String getXinjiu() {
return xinjiu;
} public void setXinjiu(String xinjiu) {
this.xinjiu = xinjiu;
}
public double liu(HashMap map){
/*声明一个大Double型的d并赋初始值为null(空) ,
* 在声明一个小double型的sum并赋初始值为0.0,
* 用来存储总价,如果type!=null 这里map.get 是取值,
* 取的是新旧值, 那么就把这个新旧值赋给d,
* 然后再用这个新旧值在去调用showHashMap();
* 方法里的某一方法,查询是否要乘以几倍,
* 用这个倍数再乘以基价赋给sum就是这本书的总价格了,
* 最后返回值是 sum
*/
Double d=null;
double sum=0.0;
if(map.get(this.xinjiu)!=null){
d=(Double)map.get(this.xinjiu);
sum=d.doubleValue()*base;
}
return sum;
} public static void Map(){
HashMap jie=new HashMap();
jie.put("mint",new Double(3.0)); //展成新 就是基价的3倍
jie.put("neat mint",new Double(2.0)); //九成新 就是2倍
jie.put("very fine",new Double(1.5)); //很信 就是1.5倍
jie.put("fine",new Double(1.0)); //新 就是1倍
jie.put("good",new Double(0.5)); //一般 0.5倍
jie.put("poor",new Double(0.25)); //很旧 0.25倍
} public static void main(String[] args) {
Comic c=new Comic("java",123,30.3,"zhanxin");
System.out.println(c.liu(jie)); } }
很新(fine),一般(good),很旧(poor).
在此类中实现为图书设定价格的方法。价格根据新旧程度和基价进行设定,每种情况下对价格的影响如下:
崭新:价格为基价的3倍;
九成新:价格为基价的2倍;
很新:价格为1.5倍;
新价:格为基价;
一般:价格为基价的0.5倍;
很旧:价格为基价的0.25倍;import java.util.*;
public class Comic {
private String name;//书的名称
private int id; //编号
private double base; //基价
private String xinjiu;//新旧程度
public Comic(String name,int id,double base,String xinjiu){
this.name=name;
this.id=id;
this.base=base;
this.xinjiu=xinjiu;
}
public String getName(){ //set get 方法
return name;
} public void setName(String name) {
this.name = name;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public double getBase() {
return base;
} public void setBase(double base) {
this.base = base;
} public String getXinjiu() {
return xinjiu;
} public void setXinjiu(String xinjiu) {
this.xinjiu = xinjiu;
}
public double liu(HashMap map){
/*声明一个大Double型的d并赋初始值为null(空) ,
* 在声明一个小double型的sum并赋初始值为0.0,
* 用来存储总价,如果type!=null 这里map.get 是取值,
* 取的是新旧值, 那么就把这个新旧值赋给d,
* 然后再用这个新旧值在去调用showHashMap();
* 方法里的某一方法,查询是否要乘以几倍,
* 用这个倍数再乘以基价赋给sum就是这本书的总价格了,
* 最后返回值是 sum
*/
Double d=null;
double sum=0.0;
if(map.get(this.xinjiu)!=null){
d=(Double)map.get(this.xinjiu);
sum=d.doubleValue()*base;
}
return sum;
} public static void Map(){
HashMap jie=new HashMap();
jie.put("mint",new Double(3.0)); //展成新 就是基价的3倍
jie.put("neat mint",new Double(2.0)); //九成新 就是2倍
jie.put("very fine",new Double(1.5)); //很信 就是1.5倍
jie.put("fine",new Double(1.0)); //新 就是1倍
jie.put("good",new Double(0.5)); //一般 0.5倍
jie.put("poor",new Double(0.25)); //很旧 0.25倍
} public static void main(String[] args) {
Comic c=new Comic("java",123,30.3,"zhanxin");
System.out.println(c.liu(jie)); } }
静态方法的优点是:再类的实例化之前就可以调用:但你不调用时不执行的,和静态变量不同!
下面的代码可以运行:import java.util.*;
public class Comic {
static HashMap jie=new HashMap();
private String name;//书的名称
private int id; //编号
private double base; //基价
private String xinjiu;//新旧程度 public Comic(String name,int id,double base,String xinjiu){
this.name=name;
this.id=id;
this.base=base;
this.xinjiu=xinjiu;
}
public double liu(HashMap map){
Double d=null;
double sum=0.0;
if(map.get(xinjiu)!=null){
d=(Double)map.get(this.xinjiu);
sum=d.doubleValue()*base;
}
return sum;
} public static void Map(){ jie.put("mint",new Double(3.0)); //展成新 就是基价的3倍
jie.put("neat mint",new Double(2.0)); //九成新 就是2倍
jie.put("very fine",new Double(1.5)); //很信 就是1.5倍
jie.put("fine",new Double(1.0)); //新 就是1倍
jie.put("good",new Double(0.5)); //一般 0.5倍
jie.put("poor",new Double(0.25)); //很旧 0.25倍 }
public static void main(String[] args) {
Comic.Map();
Comic c=new Comic("java",123,30.3,"mint");
System.out.println(c.liu(jie)); } }
这个jie是什么
是不是应该是"jie"?
现在可以运行了
主要修改的是Map方法import java.util.*;public class Comic { private String name;// 书的名称
private int id; // 编号
private double base; // 基价
private String xinjiu;// 新旧程度 public Comic(String name, int id, double base, String xinjiu) {
this.name = name;
this.id = id;
this.base = base;
this.xinjiu = xinjiu;
} public String getName() { // set get 方法
return name;
} public void setName(String name) {
this.name = name;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public double getBase() {
return base;
} public void setBase(double base) {
this.base = base;
} public String getXinjiu() {
return xinjiu;
} public void setXinjiu(String xinjiu) {
this.xinjiu = xinjiu;
} public double liu(HashMap map) {
/*
* 声明一个大Double型的d并赋初始值为null(空) , 在声明一个小double型的sum并赋初始值为0.0,
* 用来存储总价,如果type!=null 这里map.get 是取值, 取的是新旧值, 那么就把这个新旧值赋给d,
* 然后再用这个新旧值在去调用showHashMap(); 方法里的某一方法,查询是否要乘以几倍,
* 用这个倍数再乘以基价赋给sum就是这本书的总价格了, 最后返回值是 sum
*/
Double d = null;
double sum = 0.0;
if (map.get(this.xinjiu) != null) {
d = (Double) map.get(this.xinjiu);
sum = d.doubleValue() * base;
}
return sum;
} public static HashMap getMap() {
HashMap jie = new HashMap();
jie.put("mint", new Double(3.0)); // 展成新 就是基价的3倍
jie.put("neat mint", new Double(2.0)); // 九成新 就是2倍
jie.put("very fine", new Double(1.5)); // 很信 就是1.5倍
jie.put("fine", new Double(1.0)); // 新 就是1倍
jie.put("good", new Double(0.5)); // 一般 0.5倍
jie.put("poor", new Double(0.25)); // 很旧 0.25倍
return jie;
} public static void main(String[] args) {
// Comic c = new Comic("java", 123, 30.3, "zhanxin");
Comic c = new Comic("java", 123, 30.3, "mint");// System.out.println(c.liu(jie));
System.out.println(c.liu(Comic.getMap())); }}