题目:输入某年某月某日,判断这一天是这一年的第几天?

mac2026-03-16  3

版本一】缺点:没有判断输入的日期是否合法

/* 【程序13】题目:输入某年某月某日,判断这一天是这一年的第几天? 例如12月12日:计算前11个月的总天数再加上12月份的日期 */ //导包 import java.util.Scanner; class Test13 { public static void main(String[] args) { //创建键盘录入对象,并通过Sytem.in关联键盘输入 Scanner sc = new Scanner(System.in); System.out.println("请输入年:"); //使用Scanner的nextInt()方法接收整数 int year = sc.nextInt(); System.out.println("请输入月:"); int month = sc.nextInt(); System.out.println("请输入日:"); int day = sc.nextInt(); if(year<0||(month<=0&&month>12)){} int[] monthDay ={31,28,31,30,31,30,31,31,30,31,30,31}; int beforeMonthDays=0; //如果是闰年,2月份为29天 if(year%4==0&&year%100!=0||year%400==0){ monthDay[1] = 28; } //计算month-1个月的总天数; for(int i=0;i<month-1;i++){ beforeMonthDays+=monthDay[i]; } int totalDays = beforeMonthDays + day; System.out.println(year+"年"+month+"月"+day+"日"+"是该年的第"+totalDays+"天"); } }

   版本二】虽然设置了判断输入是否合法,但是还是不准确,像2月份和30天的月份

import java.util.Scanner; class Test13 { public static void main(String[] args) { int year; int month; int day; int days=0; int monthDays=0; Scanner sc = new Scanner(System.in); //定义一个标志flag,如果输入不合法(true)时重新输入,输入合法时就跳出 boolean flag; do{ flag = false; System.out.println("请输入年:"); year = sc.nextInt(); System.out.println("请输入月:"); month = sc.nextInt(); System.out.println("请输入日:"); day = sc.nextInt(); if(year<0||month<=0||month>12||day>31){ System.out.println("您输入的日期不合法,请重新输入"); flag=true; } }while(flag); for (int i=1;i<month;i++){ switch(i){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case 4: case 6: case 9: case 11: days = 30; break; case 2: if(year%4==0&&year%100!=0||year%400==0){ days = 29; break; }else{ days = 28; break; } } monthDays+=days; } System.out.println(year+"年"+month+"月"+day+"日"+"是该年的第"+(monthDays+day)+"天"); } }

运行结果:

最新回复(0)