java實驗計算日期源代碼_第1頁
java實驗計算日期源代碼_第2頁
java實驗計算日期源代碼_第3頁
java實驗計算日期源代碼_第4頁
java實驗計算日期源代碼_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、實驗二 簡單數(shù)據(jù)類型和流程控制4:設(shè)int year,month,day分別表示一個日期中的年月日,試編程求a) 對于任意三個整數(shù),判斷其是否為一個合法的日期值。b) 給定一個日期值,計算若干天后的日期值c) 如果有兩個日期值,計算他們相距的天數(shù)。實驗原理:先了解日期,年份分為平年閏年,其中平年365天,這年的二月份為28天,閏年有366天,這年二月份有29天,月份除了二月之外,30天和31天之分,這主要用到數(shù)組來進(jìn)行定義月份的天數(shù),利用Scanner類從鍵盤中輸入日期和相隔天數(shù)。輸入日期不能超出那個日歷相應(yīng)的規(guī)定值實驗過程:需引用的:Scanner 包名:date類: Datetext 屬性

2、:year,month,day; 方法:int Datetrue(int year,int month,int day)(這個方法功能是驗證輸入的日期是否正確,其中包括月份,每月的天數(shù)的驗證,具體詳細(xì),看函數(shù)標(biāo)注)int CountDate(int year1,int month1,int day1,int count1)(給定一個日期,計算count天后的日期是什么時候,在這個函數(shù)里,還有調(diào)用Datetrue(int year,int month,int day)認(rèn)證輸入的日期是否正確)int timeGap(int year_2,int month_2,int day_2,int year

3、3,int month3,int day3)(輸入兩個日期,計算它們相隔時間多少天,先驗證輸入的日期是否正確,調(diào)用input()函數(shù),具體詳細(xì)過程看源代碼)void input(int y,int m,int d)(這個函數(shù)通過遞歸調(diào)用,因輸入的日期不正確要求用戶重新輸入,調(diào)用了Dateture(int year,int month,int day))package date;import java.lang.String;import java.util.Scanner;public class Datetext public int year,month,day;public int Da

4、tetrue(int year,int month,int day) /驗證輸入的日期是否符合正常輸入 int y=year;int d=day;int mon=month;int g=0;/mon是月份/int num=0; /* num=year.length();if(num!=4)System.out.println( year+"年份輸入不合法");*/if(mon>12|mon<1)System.out.println( month+"月份輸入不合法");g=-1;else System.out.println("輸入月

5、份合法");if(d>31|d<1)System.out.println( "日期輸入不合法");if(mon!=2)if(mon=1|mon=3|mon=5|mon=7|mon=8|mon=10|mon=12)if(d>31|d<1)System.out.println( "日期輸入不合法");g=-1;else System.out.println("輸入日份合法");elseif(d>30|d<1)System.out.println("日期輸入不合法");g=-

6、1;else System.out.println("輸入日份合法");else if(y%4=0)if(d>29|d<1)System.out.println( "日期輸入不合法");g=-1;else System.out.println("輸入日份合法");if(y%4!=0)if(d>28|d<1)System.out.println( "日期輸入不合法");g=-1;else System.out.println("輸入日份合法");return g;publi

7、c int CountDate(int year1,int month1,int day1,int count1) /給點一個日期值,計算若干天后的日期int year10=year1,month10=month1,day10=day1,count=count1;System.out.println("輸出"+year10+"年"+month10+"月"+day10+"號"+"到"+count+"天后的日期是多少?");/System.out.println("下面

8、來計算相隔"+count+"后的日期");int ynumber,mnumber,month2;/month2是二月份的日數(shù) if(year10%4=0) /判斷年份 ynumber=count/366; mnumber=count%366+day10; month2=29; else ynumber=count/365; mnumber=count%365+day10; month2=28; if(ynumber>=1) year10=year10+ynumber; /*if(month=1|month=3|month=5|month=7|month=8|

9、month=10|month=12) day_count=31; elseif(month!=2) day_count=30; */ int month_day=0,31,month2,31,30,31,30,31,31,30,31,30,31; for(;mnumber>month_daymonth10;) mnumber=mnumber-month_daymonth10; if(month10=12) month10=0; year10=year10+1; month10+; day10=mnumber; System.out.println("加上"+count

10、+"天是"+year10+"年"+month10+"月"+day10+"號"); return 0;public int timeGap(int year_2,int month_2,int day_2,int year3,int month3,int day3)System.out.println("下面來計算兩個日期相隔多少天");String date1=year_2+"-"+month_2+"-"+day_2;String date2=year3+

11、"-"+month3+"-"+day3;int year1=year_2;int month1=month_2;int day2=day3;int year2=year3;int yearGap,dayGap=0;int month2=month3;int day1=day_2;int yearday=0,0;int month_year_day=0,31,28,31,30,31,30,31,31,30,31,30,31,0,31,28,31,30,31,30,31,31,30,31,30,31;/分配月份的天數(shù)if(year1>year2)yea

12、rGap=year1-year2;int temp1;temp1=year1;year1=year2;year2=temp1;int temp2;temp2=month1;month1=month2;month2=temp2;int temp3;temp3=day1;day1=day2;day2=temp3;elseyearGap=year2-year1;int year=year1,year2;int month=month1,month2;for(int i=0;i<=1;i+)if(yeari%4=0)month_year_dayi2=29;yeardayi=366;else mo

13、nth_year_dayi2=28;yeardayi=365;for(int i=1;i<(yearGap-1);i+)if(year1+i)%4=0)dayGap=dayGap+366;elsedayGap=dayGap+365;if(yearGap>0) /當(dāng)兩個日期之間有年份之差時for(;month2>0;)dayGap=dayGap+month_year_day1month2;month2-;dayGap=dayGap+day2;for(;month0<13;)dayGap=dayGap+month_year_day0month0;month0+;dayGap

14、=dayGap+month_year_day0month1-day1;else /當(dāng)兩個年份之間沒有年份之差時if(month1!=month2)/當(dāng)有月份之差if(month1>month2)dayGap=dayGap+month_year_day0month2-day2+day1;for(;month2<month1-1;)month2+;dayGap=dayGap+month_year_day0month2;else if(month1<month2)dayGap=dayGap+month_year_day0month1-day1+day2;for(;month1<

15、;month2-1;)month1+;dayGap=dayGap+month_year_day0month1;else if(month1=month2) /沒有月份之差時if(day1>day2)dayGap=dayGap+day1-day2;else dayGap=dayGap+day2-day1;System.out.println("日期"+date1+"和日期"+date2+"之間相隔時間為:"+dayGap+"天");return 0;Datetext(int y,int m,int d) yea

16、r=y; month=m; day=d; System.out.println(year+"年"+month+"月"+day+"號");public void input(int y,int m,int d)int out;out=Datetrue(y,m,d);if(out=-1)System.out.println("請重新輸入");Scanner sc=new Scanner(System.in);int y1=sc.nextInt();int m1=sc.nextInt();int d1=sc.nextIn

17、t();y=y1;m=m1;d=d1;input(y,m,d);else year=y; month=m;day=d;public static void main(String args)System.out.println("下面來進(jìn)行日期計算過程");Scanner sc=new Scanner(System.in);System.out.println("請輸入一個日期,請輸入數(shù)字日期");int y=sc.nextInt();int m=sc.nextInt();int d=sc.nextInt();Datetext text=new Date

18、text(y,m,d);System.out.println("來驗證一下讀取的日期是否正確"); text.Datetrue(y,m,d); System.out.println("請輸入一個日期"); int y1=sc.nextInt();int m1=sc.nextInt();int d1=sc.nextInt();text.input(y1, m1, d1);System.out.println("請輸入一個相隔天數(shù)");int n=sc.nextInt();text.CountDate(text.year,text.month,text.day,n);System.out.println("下面來計算兩個時間段的相隔天數(shù)");System.out.println("請輸入日期:");System.out.println("請輸入第一個日期:");int y2=sc.n

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論