首页 > 代码库 > UT源码 065 ( java version )

UT源码 065 ( java version )

NextDate函数问题 

NextDate函数说明一种复杂的关系,即输入变量之间逻辑关系的复杂性

       NextDate函数包含三个变量month、day和year,函数的输出为输入日期后一天的日期。 要求输入变量month、day和year均为整数值,并且满足下列条件:

   条件1  1≤ month ≤12  否则输出,月份超出范围

   条件2  1≤ day ≤31 否则输出,日期超出范围

   条件3  1912≤ year ≤2050  否则输出:年份超出范围

     String  nextdate(int m,int d,int y)

   注意返回值是字符串。

程序要求:

1)先显示“请输入日期”

2)不满足条件1,返回:“月份超出范围”;不满足条件2,返回:“日期超出范围”;不满足条件3,返回:“年份超出范围”;如果出现多个不满足,以最先出现不满足的错误返回信息。

3)条件均满足,则输出第二天的日期:格式“****年**月**日”(如果输入2050年12月31日,则正常显示2051年1月1日

package examOne;

import java.util.Scanner;

public class Date {
	String ia, ib, ic;
	int y, m, d;
	private boolean Read(){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入年份");
		ia = sc.nextLine();
		if( "-1".equals(ia) ){
			sc.close();
			return false;
		}
		System.out.println("请输入月份");
		ib = sc.nextLine();
		System.out.println("请输入日期");
		ic = sc.nextLine();
		return true;
	}
	
	private boolean isInputInteger(){
		try{
			y = Integer.valueOf(ia).intValue();
			m = Integer.valueOf(ib).intValue();
			d = Integer.valueOf(ic).intValue();
			return true;
		}
		catch( Exception e){
			System.out.println("输入不符合要求,请输入三个整数");
			return false;
		}
	}
	
	private boolean isInRange(){
		if( m < 1 || m > 12 ){
			System.out.println("月份超出范围");
			return false;
		}
		if( d < 1  || d > 31 ){
			System.out.println("日期超出范围");
			return false;
		}
		if( y < 1912 || y > 2050 ){
			System.out.println("年份超出范围");
			return false;
		}
		return true;
	}
	
	private int isLeapYear(){
		if( ( y % 4 == 0 && y % 100 != 0 ) || ( y % 400 == 0 ) ){
			return 1;
		}
		return 0;
	}
	
	private boolean EndOfMouth( int flg ){
		if( ( m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12 ) && d == 31 ){
	        return true;
	    }
	    if( m == 2 && d == (28 + flg) ){
	        return true;
	    }
	    if( ( m == 4 || m == 6 || m == 9 || m == 11 ) && d == 30 ){
	        return true;
	    }
	    return false;
	}
	
	private String NextDate(){
		int tag = 0;
		if( EndOfMouth( isLeapYear() ) ){
			tag = 1;
		}
		if( m == 12 && tag == 1 ){
			y++;
			m = 1;
			d = 1;
		}
		else if( tag == 1 ){
			m++;
			d = 1;
		}
		else{
			d++;
		}
		String ret = y + "年" + m + "月" + d + "日";
		return ret;
	}
	
	public static void main( String args[]){
		Date solve = new Date();
		while( solve.Read() ){
			if( solve.isInputInteger() && solve.isInRange() ){
				System.out.println( solve.NextDate() );
			}
		}
	}
}

  

UT源码 065 ( java version )