当前位置 : 主页 > 编程语言 > java >

javaHomework/Commodity.java

来源:互联网 收集:自由互联 发布时间:2021-06-28
Commodity.java package Drink;import java.util.Scanner;import java.time.*;import java.util.regex.Pattern;/*由于接口为pulic,但一个java文件中有且只有一个public类,所有接口一般单独一个文件*/ public interface Com
Commodity.java
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;
}

}

 
 
 //日期正则表达式都不知道他在干啥
网友评论