已知年月给出天数(处理输入异常)

已知年月给出天数(处理输入异常)

时间限制:
3000ms
内存限制:
65536kB
描述

输入年月,给出该年该月有多少天,要进行异常处理。

年份是1000-3000间整数,月份是1-12间整数。

输入
第一行:数据组数,其他行:每一组的年和月。
输出
指定年月的天数
如果年或月不是整数形式,输出“format error”
格式正确的情况下,如果年或月不在指定范围输出“year or month:out of range”
样例输入
3
1991 1
999 2
a b 
样例输出
31
year or month:out of range
format error
import java.util.Scanner;
public  class Main {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		for(int i=0;i<n;i++){
			try {
				String	year = sc.next();
				String	month = sc.next();
				int a=Integer.parseInt(month);
				int b=Integer.parseInt(year);
				if(b<=3000&&b>=1000||a<=1&&a>=1000){
				switch(a){
				 case 1:case 3:case 5:case 7:case 8:case 10:case 12:
					 System.out.println(31);break;
				 case 4:case 6:case 9:case 11:
					 System.out.println(30);break;
				 case 2:
					 if(b%4==0&&b%100!=0||b%400==0)
						 System.out.println(29);
					 else
						 System.out.println(28);}
				}
				else
					System.out.println("year or month:out of range");
			} catch (RuntimeException e) {
				System.out.println("format error");
			}}
			}
	   }
	  


### 回答1: 你好,根据您提供的信息,我可以使用Java编写代码来计算距离生日还有多少天。以下是代码示例: ```java import java.time.LocalDate; import java.time.Month; import java.time.Period; public class CalculateDaysToBirthday { public static void main(String[] args) { LocalDate today = LocalDate.now(); LocalDate birthday = LocalDate.of(199, Month.JANUARY, 1); // 假设生日是19911日 LocalDate nextBirthday = birthday.withYear(today.getYear()); // 计算今的生日日期 if (nextBirthday.isBefore(today) || nextBirthday.isEqual(today)) { nextBirthday = nextBirthday.plusYears(1); // 如果今的生日已经过了,就计算明的生日日期 } Period period = Period.between(today, nextBirthday); int days = period.getDays(); System.out.println("距离生日还有 " + days + " 天"); } } ``` 希望这个代码可以帮助您计算距离生日还有多少天。 ### 回答2: 可以使用Java中的日期类(Date)和日历类(Calendar)来计算距离生日还有多少天。 首先,将已知的生日日期转换为Date类型的实例,可以使用SimpleDateFormat类来实现日期的格式化转换。 ```java import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class BirthdayCalculator { public static void main(String[] args) { // 已知的生日日期 String birthdayStr = "1990-08-15"; SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date birthday = null; try { birthday = dateFormat.parse(birthdayStr); } catch (Exception e) { e.printStackTrace(); } // 获取当前日期 Calendar today = Calendar.getInstance(); today.set(Calendar.HOUR_OF_DAY, 0); today.set(Calendar.MINUTE, 0); today.set(Calendar.SECOND, 0); today.set(Calendar.MILLISECOND, 0); // 获取生日日期 Calendar birthDate = Calendar.getInstance(); birthDate.setTime(birthday); birthDate.set(Calendar.HOUR_OF_DAY, 0); birthDate.set(Calendar.MINUTE, 0); birthDate.set(Calendar.SECOND, 0); birthDate.set(Calendar.MILLISECOND, 0); // 计算距离生日还有多少天 if (today.get(Calendar.DAY_OF_YEAR) > birthDate.get(Calendar.DAY_OF_YEAR)) { birthDate.set(Calendar.YEAR, today.get(Calendar.YEAR) + 1); } else { birthDate.set(Calendar.YEAR, today.get(Calendar.YEAR)); } long diffMillis = birthDate.getTimeInMillis() - today.getTimeInMillis(); long diffDays = diffMillis / (24 * 60 * 60 * 1000); System.out.println("距离生日还有 " + diffDays + " 天"); } } ``` 这段代码先将生日日期和当前日期都设置为零点,然后通过比较当前日期和生日日期,判断生日是否已经过去。如果已经过去,则将生日份设置为下一,否则设置为今。最后计算出两个日期的毫秒差,除以一天的毫秒数得到相差的天数。 注意:该计算是基于公历日期的简单计算,不考虑闰和其他历法的影响。在实际应用中,可能需要考虑更加精确的算法。 ### 回答3: 为了计算离生日还有多少天,首先要知道当前的日期和生日的日期。可以使用Java的日期相关类来获取当前日期,如LocalDate类。然后,将生日日期设置为所需的日期并使用LocalDate类计算两个日期之间的差距。 下面是一个简单的Java代码示例来计算离生日还有多少天: ```java import java.time.LocalDate; import java.time.temporal.ChronoUnit; public class CalculateDaysUntilBirthday { public static void main(String[] args) { // 获取当前日期 LocalDate currentDate = LocalDate.now(); // 设置生日日期 LocalDate birthday = LocalDate.of(2022, 1, 1); // 假设生日是202211日 // 计算离生日还有多少天 long daysUntilBirthday = ChronoUnit.DAYS.between(currentDate, birthday); System.out.println("离生日还有 " + daysUntilBirthday + " 天"); } } ``` 在这个示例中,首先获取当前日期并将其存储在`currentDate`变量中。然后,使用`LocalDate.of()`方法设置生日日期并将其存储在`birthday`变量中。接下来,使用`ChronoUnit.DAYS.between()`方法计算当前日期和生日日期之间的差距,并将结果存储在`daysUntilBirthday`变量中。最后,将结果打印出来,即得到离生日还有多少天。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值