正则表达式_Java_SE_C++_简单题_判断输入的日期是否是正确的

前端之家收集整理的这篇文章主要介绍了正则表达式_Java_SE_C++_简单题_判断输入的日期是否是正确的前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

博主利用 正则表达式+java语言+逻辑判断 写了一个判断输入的日期是否是正确的小程序

程序逻辑比较复杂,博主写了好久。。。


import java.util.Arrays;
import java.util.Scanner;

public class Stringmatch {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);

		String k = null;
		boolean correct = false;
		do {
			if (!correct && k != null)
				System.out.println("input incorrect");

			System.out.println("please input the day you born");
			k = s.next();
			k.trim();
			if (!k.matches("[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}"))
				continue;
			String[] strings = k.split("-");
			int year = Integer.parseInt(strings[0]);
			int month = Integer.parseInt(strings[1]);
			int day = Integer.parseInt(strings[2]);

			int[] bigmonth = { 1,3,5,7,8,10,12 };
			int[] smallmonth = { 4,6,9,11 };
			if (year < 1900) // 必须是1900年之后出生的
				continue;
			if (month > 12 || month == 0)
				continue;
			if (day == 0)
				continue;

			// 一个月31天的情况
			if (Arrays.binarySearch(bigmonth,month) >= 0) {
				if (day > 31)
					continue;
			}
			// 一个月30天的情况
			else if (Arrays.binarySearch(smallmonth,month) >= 0) {
				if (day > 30)
					continue;
			}
			// 闰年的条件: 1、能整除4且不能整除100 2、能整除400
			// 闰年2月份的情况
			else if (month == 2 && (year % 4 == 0 && year % 100 != 0)
					|| year % 400 == 0) {
				if (day > 29) {
					continue;
				}
			}
			// 平年2月的情况
			else {
				if (day > 28)
					continue;
			}

			correct = true;
		} while (!correct);
		System.out.println("input correctly");
	}
}




C++版本

#include <cstdio>
#include <list>
#include <iostream>
#include <algorithm>
using namespace std;

#pragma warning(disable:4996)

int main()
{
	int month,day;
	while(scanf("%d%d",&month,&day)){
		int big[] = {1,12};
		int small[] = {4,11};
		list<int> bigmonth;
		list<int> smallmonth;
		for(int i=0; i<(sizeof(big)/sizeof(int)); i++)
			bigmonth.push_back(big[i]);
		for(int i=0; i<(sizeof(small)/sizeof(int)); i++)
			smallmonth.push_back(small[i]);
		/*
		for(list<int>::iterator i = bigmonth.begin();i!=bigmonth.end(); ++i)
			cout<<*i<<endl;
		*/

		if(binary_search(bigmonth.begin(),bigmonth.end(),month))
		{
			if(day>31)
				continue;
		}
		else if(binary_search(smallmonth.begin(),smallmonth.end(),month))
		{
			if(day>30)
				continue;
		}
		else if(2 == month){
			if(day>29)
				continue;
		}
		printf("正确的日期");
		break;
	}
	
	return 0;
}
原文链接:https://www.f2er.com/regex/359843.html

猜你在找的正则表达式相关文章