Java流程式控制制練習--萬年曆

來源:互聯網
上載者:User

標籤:public   scanner   png   rate   分享   ann   system.in   function   sys   

Java流程式控制制練習--萬年曆

標籤: Java入坑之旅

0x01. 列印倒三角和正三角
    public static void main(String[] args) {        // TODO Auto-generated method stub        int i;        int j;                /**         *  要求:列印一個倒三角以及一個正三角         *  方法:雙層迴圈         **/        for(i=3;i>0;i--) {            for(j=1;j<=i;j++) {                System.out.print("*");            }            System.out.println();        }        for(i=1;i<4;i++) {            for(j=1;j<=i;j++) {                System.out.print("*");            }            System.out.println();        }    }
Output:************
0x02. 九九乘法表1(正立)
    public static void main(String[] args) {        // TODO Auto-generated method stub        /**         *  要求:列印九九乘法表         *  方法:雙層迴圈         **/        for(int i = 1;i<=9;i++) {            for(int j = 1;j<=i;j++) {                System.out.printf("%d*%d=%-2d\t",j,i,i*j);            }            System.out.println();        }    }
Output:1*1=1   1*2=2   2*2=4   1*3=3   2*3=6   3*3=9   1*4=4   2*4=8   3*4=12  4*4=16  1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  
0x03. 九九乘法表2(倒立)
    public static void main(String[] args) {        for (int i = 1;  i <= 9; ++i) {            for (int j = 1; j <= 9; j++) {                if(j < i) {                    //輸出的空格由"%2d*%2 =%-2d "決定                    System.out.print("        ");                }                else {                    System.out.printf("%d*%d=%-2d\t", i ,j , i*j);                }            }            System.out.println();        }    }
Output:1*1=1   1*2=2   1*3=3   1*4=4   1*5=5   1*6=6   1*7=7   1*8=8   1*9=9           2*2=4   2*3=6   2*4=8   2*5=10  2*6=12  2*7=14  2*8=16  2*9=18                  3*3=9   3*4=12  3*5=15  3*6=18  3*7=21  3*8=24  3*9=27                          4*4=16  4*5=20  4*6=24  4*7=28  4*8=32  4*9=36                                  5*5=25  5*6=30  5*7=35  5*8=40  5*9=45                                          6*6=36  6*7=42  6*8=48  6*9=54                                                  7*7=49  7*8=56  7*9=63                                                          8*8=64  8*9=72                                                                  9*9=81                                                                
0x04. 萬年曆 calendar4.1 求解思路

例1:1900年02月。

  1. 1900年為平年,02月為28天。
  2. 02月01日距離01月01日有(30+1=31)31天。
  3. 每7天為1周,(31%7=3)所以02月01日就是星期三(date[0]為星期日)。
  4. 從01號開始迴圈輸出到28即可;

例2:1900年04月。

  1. 1900年為平年,02月有28天。
  2. 04月01日距離01月01日有(30+28+31+1=90)90天。
  3. 每7天為1周,(90%7=6)所以04月01日就是星期六(date[0]為星期日)。
  4. 從01號開始迴圈輸出到30即可;

4.2 演算法思路
  1. 確認輸入年份是否為閏年。如果是閏年,則2月天數為29,否則為28天。
  2. 求解輸入的月份距離1900年1月1日的天數;
  3. 確定這個月的01號是星期幾;
  4. 從01號開始輸出到這個月的最後一天即可。
4.3 Java代碼
package com.ryanjie.Test0727;import java.util.Scanner;public class Calendar {        /**     * function:判斷輸入年是否為閏年     * @param year     * @return     */    static boolean Leapyear(int year){         if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {             // 是閏年            return true;         }                else {            //是平年            return false;        }    }            //用N表示起始年份    static final int N = 1900;            /**     * Function: 首先確認當前月距離1900年1月1日的天數,之後判斷出這個月的01號為星期幾,     *              之後控制輸出日曆     * @param Currentyear     * @param Currentmonth     */    static void MonthCalendar(int Currentyear,int Currentmonth) {                // sumdays 用來儲存一共有多少天        int sumdays = 0;        // 儲存12個月的天數( 沒有0月,所以month[0]=0 )        int month[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};                 // 儲存1900-11969中的每一年的01月01號是星期幾 year[0] = 1代表1970年01月01日為星期一        for(int i = N;i < Currentyear;i ++) {                        // days用來儲存前一年一共多少天(366/365)            int days = 365;            if(Leapyear(i)) {                days ++;                sumdays = sumdays + days;            }            else{                sumdays = sumdays + days;            }        }                // 如果是閏年,2月改為29號        if(Leapyear(Currentyear)){             month[2] = 29;        }                for(int i=1;i<Currentmonth;i++){            sumdays = sumdays + month[i];        }                 // week 用來儲存當前月01號是星期幾        int week;        week = (sumdays + 1) % 7;                System.out.println("星期日\t" + "星期一\t" + "星期二 \t" + "星期三 \t" + "星期四 \t" + "星期五 \t" + "星期六 \t");        System.out.println();        // 輸出控制        for(int i = 0;i < week; i++) {            System.out.print(" \t");        }        for(int i = 1; i <= month[Currentmonth]; i ++) {            System.out.printf(" %-2d \t",i);            if ((week) % 7 == 6) {                System.out.println();            }            week ++;        }             }        public static void main(String[] args){        while(true) {            int Month ,Year;            Scanner in = new Scanner(System.in);            System.out.println();            System.out.println("********歡迎您使用萬年曆!********");            System.out.println("請輸入年份<1900~11900>:");            Year = in.nextInt();            if(Year < 1900){                System.out.println("輸入年份不合法,請重新輸入!");                Year = in.nextInt();            }            System.out.println("請輸入月份<1~12> :");            Month = in.nextInt();            if(Month < 1  ||  Month > 12){                System.out.println("輸入月份不合法,請重新輸入!");                Month = in.nextInt();            }            MonthCalendar(Year,Month);            System.out.println();            System.out.println("********感謝您使用萬年曆!********");        }           }}
Output:********歡迎您使用萬年曆!********請輸入年份<1900~11900>:2018請輸入月份<1~12> :7星期日 星期一 星期二     星期三     星期四     星期五     星期六       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26      27      28      29      30      31    ********感謝您使用萬年曆!********

emmm.....輸出格式是正確的,但是markdown下格式就會錯誤,頭疼。。。。。。。

Java流程式控制制練習--萬年曆

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.