標籤: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月。
- 1900年為平年,02月為28天。
- 02月01日距離01月01日有(30+1=31)31天。
- 每7天為1周,(31%7=3)所以02月01日就是星期三(date[0]為星期日)。
- 從01號開始迴圈輸出到28即可;
例2:1900年04月。
- 1900年為平年,02月有28天。
- 04月01日距離01月01日有(30+28+31+1=90)90天。
- 每7天為1周,(90%7=6)所以04月01日就是星期六(date[0]為星期日)。
- 從01號開始迴圈輸出到30即可;
4.2 演算法思路
- 確認輸入年份是否為閏年。如果是閏年,則2月天數為29,否則為28天。
- 求解輸入的月份距離1900年1月1日的天數;
- 確定這個月的01號是星期幾;
- 從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流程式控制制練習--萬年曆