Drink.java package Drink;import java.util.*;import java.time.*;public class Drink implements Commodity{private String id;private String name;private double price;private int capacity;//容量private LocalDate productionDate;//生产日期//
package Drink; import java.util.*; import java.time.*; public class Drink implements Commodity{ private String id; private String name; private double price; private int capacity;//容量 private LocalDate productionDate;//生产日期 //boolean ismodifyflag;//用于判断是否修改数据 //get set 函数 public void setId(String id) { this.id=id; } public String getId() { return id; } public void setName(String name){ this.name=name; } public String getname() { return name; } //抛出价格异常 public void setPrice(double price) { if(price>=0){ this.price=price; }else{//有符号,字母,负数需要处理 throw new DrinkException("价格",price); } } public double getPrice() { return price; } public void setCapacity(int capacity) { if(capacity>=0){ this.capacity=capacity; }else{//价格属性其实已经有接口中的静态方法inputInt确保输入的正整数 int capacitydouble; capacitydouble=capacity;//int转double throw new DrinkException("容量",capacitydouble);//抛出容量异常 } } public int getCapacity() { return capacity; } public void setProductionDate(LocalDate day) { this.productionDate=day; } public LocalDate getproductionDate() { return productionDate; } /* public boolean getIsModifyFlag() {} { return ismodifyflag; } public void setIsModifyFlag(boolean isModifyFlag) { this.ismodifyflag=isModifyFlag; }*/ /*下面写构造方法*/ public Drink() {}//无参构造方法,方便继承 public Drink(String name,double price){//构造方法一 this.name=name; this.price=price; } public Drink(String id,String name,double price,int capacity,LocalDate day) {//构造方法二 this(name,price);//调用其他构造方法 this.setId(id); this.setCapacity(capacity); this.setProductionDate(day); } /*输出对象信息*/ public void disDrink() { System.out.println("条形码:"+this.getId()); System.out.println("名称:"+this.getname()); System.out.println("价格:"+this.getPrice()); System.out.println("容量"+this.getCapacity()); System.out.println("生产日期:"+this.productionDate); } /*鬼知道这个重载函数是什么意思*//*我好像懂什么意思,就是先输出括号里的字符串,再输出所有资料*/ public void disDrink(String hint) { System.out.println(hint); disDrink(); } /*设置对象参数*/ public void inputDrink(Scanner sc) { System.out.print("条形码:"); this.setId(sc.next()); System.out.print("名称:"); this.setName(sc.next()); System.out.print("价格:"); try { this.setPrice(sc.nextDouble()); }catch(DrinkException se) { System.out.println("价格输入为负数,系统自动设置为默认值:0"); this.setPrice(0); }catch(InputMismatchException se) { System.out.println("价格输入为非法字符,系统自动设置为默认值:0"); this.setPrice(0); sc.nextLine(); } /*价格输入抛错,符号,java.util.InputMismatchException 字母,java.util.InputMismatchException 价格负数,Drink.DrinkException: 价格异常 */ System.out.print("容量:"); this.setCapacity(Commodity.inputInt(sc));//调用接口静态方法,确保输入值为正整数 while(this.capacity==0) { System.out.print("容量不能为0,请重新输入:"); this.setCapacity(Commodity.inputInt(sc)); } System.out.print("生产日期(yyyy-mm-dd):"); this.setProductionDate(Commodity.inputDate(sc)); } /*下面这个重载我还是不知道什么意思*//*跟上面那个一样*/ public void inputDrink(Scanner sc,String hint) { System.out.println(hint); inputDrink(sc); } public void modifyDrink(Scanner sc) {//信息修改方法 //boolean ismodifyflag=false; String stringIn;//字符串型输入 sc.nextLine();//此行代码目的死消除缓冲去现有空字符对当前输入的影响 喵喵喵喵?? System.out.println("开始修改饮料信息(直接回车不修改)——");//啊,上面那句是什么意思?? System.out.print("原条形码:"+this.id+"\t修改为:"); stringIn=sc.nextLine(); if(!stringIn.equals("")) {//与空字符比较对应上面直接回车不修改 this.setId(stringIn); //ismodifyflag=true; } System.out.print("原名称:\t"+this.name+"\t修改为:"); stringIn=sc.nextLine(); if(!stringIn.equals("")) { this.setName(stringIn); //ismodifyflag=true; } System.out.print("原价格:\t"+this.price+"\t修改为:"); stringIn = sc.nextLine(); if(!stringIn.equals("")) { try { //Integer.parseInt();将字符串转为整型 this.setPrice(Double.parseDouble(stringIn));//Double.parseDouble();将字符串转为浮点型 }catch(DrinkException se) { System.out.println("价格输入为负数,系统不予修改"); }catch(NumberFormatException se) { System.out.println("价格输入为非法字符,系统不予修改"); } //ismodifyflag=true; } /*价格输入抛错,符号,java.util.InputMismatchException 字母,java.util.InputMismatchException 价格负数,Drink.DrinkException: 价格异常 */ System.out.print("原容量:"+this.capacity+"\t修改为:"); stringIn=sc.nextLine(); int oldCapacity=this.capacity; if(!stringIn.equals("")) { try { this.setCapacity(Integer.parseInt(stringIn)); }catch(DrinkException se) { System.out.println("容量输入为非法字符,系统不予修改"); }catch(NumberFormatException se) { System.out.println("容量输入为非法字符,系统不予修改"); } //ismodifyflag=true; if(this.capacity==0) {//限制0输入 System.out.println("容量不能为0,系统不予修改"); this.setCapacity(oldCapacity); //ismodifyflag=false; } } System.out.print("原生产日期:"+this.productionDate+"\t修改为(yyyy-mm-dd):"); stringIn=sc.nextLine(); if(!stringIn.equals("")) { boolean flag; flag=Commodity.inputDate(stringIn); if(flag) { this.setProductionDate(LocalDate.parse(stringIn));//字符串转换为日期格式 //ismodifyflag=true; }else { System.out.println("日期输入错误,系统不予修改"); } } } /*private String id; private String name; private double price; private int capacity;//容量 private LocalDate productionDate;//生产日期 */ /*void regist();//商品登记 void inspection();//参加检测 default String getResult(String course);//查询检测结果 */ public void regist(){//重写接口regist();商品登记方法 System.out.println(this.name+"在"+Calendar.getInstance().getTime()+"登记入库"); }//Calendar.getInstance().getTime();获取当前时间并格式化 public void inspection() {}; public void inspection(String course){//重写接口inspertion();参加检测方法 System.out.println(this.name+"参加"+course+"检测");//缺少检测项目 } //返回类型为字符串型 public String getResult(String course) { if(course.equals("容量")) { return Integer.toString(this.capacity); }else { System.out.println("该产品不参加该项测试"); return "该产品不参加该项测试"; } } public String getColor() { // TODO Auto-generated method stub return null; } public int getSweetness() { // TODO Auto-generated method stub return 0; } }