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;
}
}
