1. 程式人生 > >五十道程式設計小題目 --- 14 java

五十道程式設計小題目 --- 14 java


【程式14】 
題目:輸入某年某月某日,判斷這一天是這一年的第幾天? 
1.程式分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊情況,判斷閏年
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
import java.util.Scanner;

public class Test14 {
	
	static int[] a = {1,3,5,7,8,10,12};
	static int[] b = {4,6,9,11};
	
	private static List<int[]> day_31 = Arrays.asList(a);
	private static List<int[]> day_30 = Arrays.asList(b);
	
	//計算天數
	public static int dayCount(int y,int m, int d){
		
		if(y<0 || m<0 || d<0 || m>12 || d>31){
			return -1;
		}
		
		Calendar c = Calendar.getInstance();
		c.set(y, m-1, d);
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd ");
		System.out.println("輸入日期為:" + sdf.format(c.getTime()));  //格式化時間
	
		
		int yy = c.get(Calendar.YEAR);   // 得到年份
		int mm = c.get(Calendar.MONTH)+1;  //得到月份,月份從0開始算,即一月是0
		int dd = c.get(Calendar.DAY_OF_MONTH); //得到天
		
		int day_sum =0;
		if( (yy%4 == 0 && yy%100 != 0) || yy%100 == 0 ){  //判斷閏年
			
			for(int i=1; i<mm; i++){        //月累加
				if(day_31.contains(i)){
					day_sum += 31;
				}else if(day_30.contains(i)){
					day_sum +=30;
				}else{
					day_sum +=29;
				}
			}
			
		}else{
			for(int i=1; i<mm; i++){    //月累加
				if(day_31.contains(i)){
					day_sum += 31;
				}else if(day_30.contains(i)){
					day_sum +=30;
				}else{
					day_sum +=28;
				}
			}
		}
		
		day_sum += dd;
		
		return day_sum;
		
		
	}
	
	
	public static void main(String[] args) {
		
		System.out.println("請輸入年月日:");
		Scanner s = new Scanner(System.in);
		
		System.out.println("該日期為本年的第" + dayCount(s.nextInt(), s.nextInt(), s.nextInt()) + "天");
		
	}

}
輸出結果為:
請輸入年月日:
2015
2
12
輸入日期為:2015-02-12 
該日期為本年的第40天



相關推薦

程式設計題目 --- 14 java

【程式14】 題目:輸入某年某月某日,判斷這一天是這一年的第幾天? 1.程式分析:以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊情況,判斷閏年 import java.text.SimpleDateFormat; import java.uti

程式設計題目 --- 24 java

【程式24】 題目:給一個不多於5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字。  import java.util.Collections; import java.util.LinkedList; import java.util.Scanner;

程式設計題目 --- 48 java

【程式48】  題目:某個公司採用公用電話傳遞資料,資料是四位的整數,在傳遞過程中是加密的,加密規則如下:每位數字 都加上5,然後用和除以10的餘數代替該數字,再將第一位和第四位交換,第二位和第三位交換。  import java.util.HashMap;

程式設計題目 --- 40 字串排序 java

【程式40】 題目:字串排序。  import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; import java.util.regex.Matcher; import

程式設計題目 --- 33 楊輝三角 java

【程式33】  題目:打印出楊輝三角形(要求打印出10行如下圖) 1.程式分析: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1  1 5 10 10 5 1  楊輝三角: 1 1   1    1   2   1    1   3   3   1 

程式設計題目 --- 09 完數 java

【程式9】 題目:一個數如果恰好等於它的因子之和,這個數就稱為"完數"。例如6=1+2+3.程式設計 找出1000以內的所有完數。  import java.util.ArrayList; import com.sun.tools.apt.Main; public c

程式設計題目 --- 28 八大排序演算法 java 之 06快速排序

6. 交換排序—快速排序(Quick Sort) 快速排序演算法介紹       快速排序和歸併排序都使用分治法來設計演算法,區別在於歸併排序把陣列分為兩個基本等長的子陣列,分別排好序之後還要進行歸併(Merge)操作,而快速排序拆分子陣列的時候顯得更有藝術,取一

程式設計題目 --- 28 八大排序演算法 java 之 02希爾排序

 2. 插入排序—希爾排序(Shell`s Sort) 希爾排序是1959 年由D.L.Shell 提出來的,相對直接排序有較大的改進。希爾排序又叫縮小增量排序 基本思想: 先將整個待排序的記錄序列分割成為若干子序列分別進行直接插入排序,待整個序列中的記錄“基本有序

程式設計題目 --- 11 排列與組合(階乘) java

package wn.comeOn.java.test.arithmetic50; import java.util.ArrayList; public class Arrangement { // 階乘 public static int factorial(int n) { if (n

程式設計題目 --- 28 八大排序演算法 java 之 07歸併排序

7. 歸併排序(Merge Sort) 基本思想: 歸併(Merge)排序法是將兩個(或兩個以上)有序表合併成一個新的有序表,即把待排序序列分為若干個子序列,每個子序列是有序的。然後再把有序子序列合併為整體有序序列。 歸併排序示例:   合併方法: 設r[

程式設計題目 --- 19 列印菱形 java

【程式19】 題目:打印出如下圖案(菱形)      *    ***   *****  *******   *****    ***     * 和圖形 * *** ****** ******** ****** *** *  import java.util.Scan

程式設計題目 --- 28 八大排序演算法 java 之 01直接插入排序

1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 將一個記錄插入到已排序好的有序表中,從而得到一個新,記錄數增1的有序表。即:先將序列的第1個記錄看成是一個有序的子序列,然後從第2個記錄逐個進行插入,直至整個序列有序為止。 要

程式設計題目 --- 50 有個學生,每個學生有3門課的成績,計算出平均成績,況原有的資料和計算出的平均分數存放在磁碟檔案"stud"中java

【程式50】 題目:有五個學生,每個學生有3門課的成績,從鍵盤輸入以上資料(包括學生號,姓名,三門課成績),計算出平均成績,況原有的資料和計算出的平均分數存放在磁碟檔案"stud"中。 import java.io.BufferedReader; import ja

程式設計題目 --- 49 計算字串中子串出現的次數 java

【程式49】 題目:計算字串中子串出現的次數  public class Test49 { public static void main(String[] args) { String string = "asdbdiasddeigongksas

程式設計題目 --- 43 求0—7所能組成的奇數個數(排列組合) java

【程式43】 題目:求0—7所能組成的奇數個數。  演算法思想:這個問題其實是一個排列組合的問題,設這個數為sun=a1a2a3a4a5a6a7a8,a1-a8表示這個數的某位的數值,當一個數的最後一位為奇數時,那麼這個數一定為奇數,不管前面幾位是什麼數字。如果最後一位

程式設計題目 --- 41 809*??=800*??+9*??+1 java

【程式42】 題目:809*??=800*??+9*??+1 其中??代表的兩位數,8*??的結果為兩位數,9*??的結果為3位數。求??代表的兩位數,及809*??後的結果。 package wn.comeOn.java.test.arithmetic50;

程式設計題目 --- 41 海灘上有一堆桃子,隻猴子來分 java

【程式41】  題目:海灘上有一堆桃子,五隻猴子來分。第一隻猴子把這堆桃子憑據分為五份,多了一個,這隻猴子把多的一 個扔入海中,拿走了一份。第二隻猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中 ,拿走了一份,第三、第四、第五隻猴子都是這樣做的,問海灘

程式設計題目 --- 28 八大排序演算法 java 00

【程式28】 題目:對10個數進行排序 1.程式分析:八大排序演算法 擴充套件:八大排序演算法 排序有內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。     當n較大,

程式設計題目,大家有時間也做做啊,一起交流演算法與心得

今天在黑馬論壇上,看到了50道程式設計小題目,看了一下挺好的,就留下來,大家有時間也做做啊,做好把程式碼和心得貼在自己部落格,大家一塊交流啊,別小看這些小題目,做大的系統也是把一個大系統不斷的分成一個個小模組做啊,我覺得這個很能鍛鍊邏輯思維能力,和對面向物件的理解,從題目中

程式設計題目 --- 00

50道程式設計小題目, 【程式1】 題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?【即斐波那契數列】1.程式分析: 兔子的規律為數列1,1,2,3,5,8,13,21..