《软件测试》隔一日问题Java实现

《软件测试》隔一日问题Java实现

题目:隔一日问题
用功能性测试方法测试以下程序:该程序有三个输入变量month、day、year(month 、 day 和year均为整数值,并且满足:1≤month≤12,1≤day≤31和1900≤year≤2050),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期。例如,输入为 2004 年11 月29 日,则该程序的输出为2004 年12 月1 日。
(1) 编写该问题的需求规格说明书,并完成程序设计。
(2) 使用功能性测试技术设计两套测试用例集,主要考虑等价类划分和边界值分析测试技术。
(3) 根据设计的两套测试用例集进行测试。

小白第一次写博客,很简单的一个问题,这里只放代码实现,有什么问题还请大家指教。

package Test;

import java.util.Scanner;

public class demo {
	
	public static void main(String[] args) {
		System.out.println("隔一日问题:");
		@SuppressWarnings("resource")
		Scanner scanner = new Scanner(System.in);
		inquireDate d = new inquireDate();
		/*// 单个输入
		while(true) {
			System.out.println("请输入1900-2050年任意日期(xxxx年xx月xx日):");
			d.year = scanner.nextInt();
			d.month = scanner.nextInt();
			d.day = scanner.nextInt();
			if(1900 > d.year || d.year > 2050) {
				System.out.println("年份不符合要求!");
			}
			else {
				//先判断日期是否合法
				if(d.isLegal()) {
					d.result();
					System.out.println("其隔一日日期为:"+d.year+"年"+d.month+"月"+d.day+"日");
				}
				else System.out.println("该日期不存在!");
			}
			System.out.println();
		}*/
		//批量输入
		while(true) {
			System.out.println("请输入待查询的日期总数:");
			int count = scanner.nextInt();
			int[] year = new int[count];
			int[] month = new int[count];
			int[] day = new int[count];
			System.out.println("请输入1900-2050年任意日期(xxxx年xx月xx日):");
			for(int i = 0; i < count ;i++) {
				year[i] = scanner.nextInt();
				month[i] = scanner.nextInt();
				day[i] = scanner.nextInt();										
		    }
			for (int i = 0; i < count; i++) {
				d.year = year[i];
				d.month = month[i];
				d.day = day[i];		
				if(1900 > year[i] || year[i] > 2050) {
					System.out.println( year[i]+"年份不符合要求!");
				}
				else {
					//先判断日期是否合法
					if(d.isLegal()) {
						d.result();
						System.out.println(year[i]+"年"+month[i]+"月"+day[i]+"日"+"的隔一日日期为:"+d.year+"年"+d.month+"月"+d.day+"日");
					}
					else System.out.println(year[i]+"年"+month[i]+"月"+day[i]+"日"+" 不存在!");
				}
			}
			System.out.println();
		}
	}
}

class inquireDate {
	public int year,month,day;	
	
	//判断闰年
	public boolean isLeapYear() {
		return (year % 4 == 0 && year % 100 != 0 || year % 400 == 0);
	}
	
	//判断输入日期是否合法
	public boolean isLegal() {		
		if (month != 2) {
			if ( month == 4 || month == 6 || month == 9 || month == 11 ) {
				if ( 0 < day && day <= 30) return true;
				return false;
			}
			else {
				if ( 0 < day && day <= 31 && 0 < month && month <= 12 ) return true;
				return false;
			}
		}				
		else if (isLeapYear()) {			
				if ( 0 < day && day <= 29) return true;
				return false;						
		}
		else {			
				if ( 0 < day && day <= 28) return true;
				return false;						
		}		
	}
	
	//求隔一日日期
	public void result() {
			//非2月情况
			if (month != 2) {
				//小月只有30天
				if ( month == 4 || month == 6 || month == 9 || month == 11 ) {
					if (day == 29){
						day = 1;
						month++;
					}
					else if (day == 30){
						day = 2;
						month++;
					}
					else day = day + 2;
				}
				//非12月的大月,有31天
				else if(month != 12){
					if (day == 30){
						day = 1;
						month++;
					}
					else if (day == 31){
						day = 2;
						month++;
					}
					else day = day + 2;
				}
				//12月,涉及跨年
				else {
					if (day == 30){
						day = 1;
						month = 1;
						year++;
					}
					else if (day == 31){
						day = 2;
						month = 1;
						year++;
					}
					else day = day + 2;
				}
			}
			//2月,分平年、闰年
			else if (isLeapYear()) {			
				if (day == 28){
					day = 1;
					month++;
				}
				else if (day == 29){
					day = 2;
					month++;
				}
				else day = day + 2;					
			}
			//平年2月只有28天
			else {			
				if (day == 27){
					day = 1;
					month++;
				}
				else if (day == 28){
					day = 2;
					month++;
				}
				else day = day + 2;							
			}		
	}	
}
  • 8
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值