7-5 求前N天 (30 分)
生活随笔
收集整理的這篇文章主要介紹了
7-5 求前N天 (30 分)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
輸入年月日的值(均為整型數(shù)),同時輸入一個取值范圍在[-10,10] 之間的整型數(shù)n,輸出該日期的前n天(當n > 0時)、該日期的后n天(當n<0時)。
其中年份取值范圍為 [1820,2020] ,月份取值范圍為[1,12] ,日期取值范圍為[1,31] 。
注意:不允許使用Java中任何與日期有關的類或方法。
輸入格式:
在一行中輸入年月日的值以及n的值,可以用一個或多個空格或回車分隔。
輸出格式:
當輸入的年、月、日以及n的值非法時,輸出“Wrong Format”;
當輸入數(shù)據(jù)合法時,輸出“n days ago is:年-月-日”
輸入樣例1:
在這里給出一組輸入。例如:
2018 6 19 8
輸出樣例1:
在這里給出相應的輸出。例如:
8 days ago is:2018-6-11
輸入樣例2:
在這里給出一組輸入。例如:
2018 6 19 -8
輸出樣例2:
在這里給出相應的輸出。例如:
-8 days ago is:2018-6-27
import java.util.Scanner; public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);boolean f=true;int y=0,m=0,d=0,n=0;if (sc.hasNextInt())y= sc.nextInt();elsef=false;if (sc.hasNextInt())m= sc.nextInt();elsef=false;if (sc.hasNextInt())d= sc.nextInt();elsef=false;if (sc.hasNextInt())n= sc.nextInt();elsef=false;if (checkInputValidity(y,m,d,n)&&f){nextDate(y,m,d,n);}elseSystem.out.println("Wrong Format");}public static boolean isLeapYear(int year) {boolean ret=false;if ((year%100!=0&&year%4==0)||(year%400==0)){ret=true;}return ret;}public static boolean checkInputValidity(int year,int month,int day,int n){boolean ret=false;int[] mm={31,28,31,30,31,30,31,31,30,31,30,31};if (isLeapYear(year))mm[1]=29;if ((year>=1820&&year<=2020)&&(month>=1&&month<=12)&&(day>=1&&day<=mm[month-1])){//此處的month-1用來判斷不同年份的不同月份的數(shù)據(jù)是否合法ret=true;}return ret;}public static void nextDate(int year,int month,int day,int n) {int[] mm={0,31,28,31,30,31,30,31,31,30,31,30,31};if (isLeapYear(year))mm[2]=29;day-=n;if (n>0){while (day<=0){//這邊是讀錯題寫的while循環(huán),實際上n在-10到10之間,不需要循環(huán),但是上面的判斷n的條件我沒有加,//也就是可以判斷大于10和小于-10范圍以外的n,但是沒有詳細去測試過,單這道題的測試點來講是沒有問題的month--;if (month==0){//這邊因為是mm有0的索引,因此要提前判斷是否等于0month+=12;year--;}day+=mm[month];}}else if (n<0){while (day>mm[month]) {day-=mm[month];month++;if (month==13){month-=12;year++;}}}System.out.printf("%d days ago is:%d-%d-%d\n",n,year,month,day);} }總結
以上是生活随笔為你收集整理的7-5 求前N天 (30 分)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑与远征2启程神魔选谁 剑与远征2启程神
- 下一篇: 小鹏发布2024新款G9起售价26.39