标签:复杂 imp import cep put stat cat system.in 逻辑
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() );
}
}
}
}
标签:复杂 imp import cep put stat cat system.in 逻辑
原文地址:http://www.cnblogs.com/Tichocan/p/6610631.html