#29216: Java AC Switch


wer12369qaz15963@gmail.com (dentr)

學校 : 新北市立清水高中
編號 : 174903
來源 : [111.248.152.60]
最後登入時間 :
2022-07-26 15:13:49
a263. 日期差幾天 -- 板橋高中練習題 | From: [219.84.98.239] | 發表日期 : 2022-02-06 17:48

這題的思路 前面討論超多 所以不多提

就 想分享一下 剛發現的Switch的用法

如題 假設我要算 當年的天數 就得 用出 陣列  對照 月的天數 

可以發現 30 跟 31 是重複的值 

用Switch 可以 多個值 匹配同個結果

例如:

case 1: case 3: case 4: 

System.out.println("1") 

break;             << 只要是 值是 1 或 3 或4 就貼出1

純粹方便

 

 

 

 

 

 

(建議自己打完再看)

code: >>>

import java.util.Scanner;

public class a263 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
while(input.hasNextInt()){
int year1 = input.nextInt();
int month1 = input.nextInt();
int day1 = input.nextInt();
int year2 = input.nextInt();
int month2 = input.nextInt();
int day2 =input.nextInt();
System.out.println(Math.abs( year_day(year1,month1,day1) - year_day(year2,month2,day2) ));

}
}
public static int year_day (int year, int month, int day){
int ans = 0;
for (int i =1;i<year;i++) {
if (i%4==0&&i%100!=0||i%400==0){
ans+=366;
} else {
ans+=365;
}
}
for (int i=1;i<month;i++){
switch(i) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
ans +=31; break;
case 4: case 6: case 9: case 11:
ans +=30; break;
case 2:
if (year%4==0&&year%100!=0||year%400==0){
ans += 29;
} else {ans += 28;}break;
}
}
return ans+day;
}
}

 

 
ZeroJudge Forum