Commodity.java package Drink;import java.util.Scanner;import java.time.*;import java.util.regex.Pattern;/*由于接口为pulic,但一个java文件中有且只有一个public类,所有接口一般单独一个文件*/ public interface Com
package Drink;
import java.util.Scanner;
import java.time.*;
import java.util.regex.Pattern;
/*由于接口为pulic,但一个java文件中有且只有一个public类,所有接口一般单独一个文件*/
public interface Commodity{//商品接口
void disDrink(String hint);
void inputDrink(Scanner sc,String hint);
void modifyDrink(Scanner sc);
void regist();//商品登记
void inspection();//参加检测
default String getResult(String course) {//查询检测结果
//System.out.println("检测结果功能暂不提供");
return "检测结果功能暂不提供";
}
//利用正则表达式确保输入的数据为正整数
static int inputInt(Scanner sc) {
int result;
String intPattern="^\\d+$";//正整数模式字符串
Pattern p=Pattern.compile(intPattern);
String s;
while(true) {
s=sc.next();
if(p.matcher(s).matches()) {
break;
}else {
System.out.print("输入的不是正整数,请重新输入:");
}
}
result=Integer.parseInt(s);
return result;
}
//利用正则表达式确保时间的正确输入
/*
static LocalDate inputDate(Scanner sc) {
LocalDate result;
int[] mothDays= {31,29,31,30,31,30,31,31,30,31,30,31};//确定每个月有多少天
String datePattern="^\\{4}-\\d{2}-\\d{2}$";//简单日期日期XXXX-XX-XX正则表达式
Pattern p=Pattern.compile(datePattern);
String s;
while(true) {
s=sc.next();
boolean valid =true;
String message ="";
if(p.matcher(s).matches()) {
String[] dateFiedls=s.split("-");
int y=Integer.parseInt(dateFiedls[0]);
int m=Integer.parseInt(dateFiedls[1]);
int d=Integer.parseInt(dateFiedls[2]);
if(m>12||m<1) {
valid=false;
message="月份输入有误,请重新输入:";
}else if(d>mothDays[m-1]||d<1){
valid=false;
message="日期输入有误,请重新输入:";
}else {
MonthDay md=MonthDay.of(m, d);
if(!md.isValidYear(y)) {
valid=false;
message="非闰年2月只有28天,请重新输入:";
}
}
}else {
}
}
}*/
//利用正则表达式确保时间的正确输入
static LocalDate inputDate(Scanner sc){
LocalDate result;
int[] monthDays = {31,29,31,30,31,30,31,31,30,31,30,31};//定义每个月有多少天
String datePattern = "^\\d{4}-\\d{2}-\\d{2}$"; //简单日期模式字符串正则表达式
Pattern p = Pattern.compile(datePattern);
String s;
while(true){
s = sc.next();
boolean valid = true;
String message = "";
if(p.matcher(s).matches()){
String[] dateFields = s.split("-");
int y = Integer.parseInt(dateFields[0]);
int m = Integer.parseInt(dateFields[1]);
int d = Integer.parseInt(dateFields[2]);
if(m>12||m<1){
valid = false;
message = "月份输入有误。请重入!";
}
else if(d>monthDays[m-1]||d<1){
valid = false;
message = "日期输入有误。请重入!";
}
else {
MonthDay md = MonthDay.of(m,d);
if(!md.isValidYear(y)){
valid = false;
message = "非闰年2月不能输入29!请重入!";
}
}
}
else{
valid = false;
message = "输入日期格式不正确。请重入!";
}
if(valid)
break;
else
System.out.println(message);
}
result = LocalDate.parse(s);
return result;
}
static /*LocalDate*/boolean inputDate(String S){//通过正则表达式检验日期输入,用于Drink.modify.data
//LocalDate result;
int[] monthDays = {31,29,31,30,31,30,31,31,30,31,30,31};//定义每个月有多少天
String datePattern = "^\\d{4}-\\d{2}-\\d{2}$"; //简单日期模式字符串正则表达式
Pattern p = Pattern.compile(datePattern);
String s;
//while(true){
s = S;
boolean valid = true;
String message = "";
if(p.matcher(s).matches()){
String[] dateFields = s.split("-");
int y = Integer.parseInt(dateFields[0]);
int m = Integer.parseInt(dateFields[1]);
int d = Integer.parseInt(dateFields[2]);
if(m>12||m<1){
valid = false;
message = "月份输入有误。";
}
else if(d>monthDays[m-1]||d<1){
valid = false;
message = "日期输入有误。";
}
else {
MonthDay md = MonthDay.of(m,d);
if(!md.isValidYear(y)){
valid = false;
message = "非闰年2月不能输入29!";
}
}
}
else{
valid = false;
message = "输入日期格式不正确。";
}
if(valid) {
//break;
return valid;
}
else {
System.out.println(message);
return valid;
}
//}
//result = LocalDate.parse(s);
//return result;
}
}
//日期正则表达式都不知道他在干啥
