黑马程序员技术交流社区

标题: 有没有更简单的方法? [打印本页]

作者: lvwangxiao    时间: 2016-3-14 11:38
标题: 有没有更简单的方法?
题目:键盘输入年份和月份,然后控制台返回该月份的天数(闰年2月29天).
(闰年:年份是整百数时,必须是400的倍数才是闰年)
  1. import java.util.Scanner;

  2. public class Mymonth {
  3.         public static void main(String[] args){
  4.                
  5.                 Scanner sc = new Scanner(System.in);
  6.                 System.out.println("请输入年份:");
  7.                 int year = sc.nextInt();
  8.                 System.out.println("请输入月份:");
  9.                 int month = sc.nextInt();
  10.                
  11.                 if(year%400 == 0){
  12.                         System.out.println("您输入的年份是闰年!");
  13.                         switch(month){
  14.                         case 1:
  15.                         case 3:
  16.                         case 5:
  17.                         case 7:
  18.                         case 8:
  19.                         case 10:
  20.                         case 12:
  21.                                 System.out.println("您输入的月份有31天!");
  22.                                 break;
  23.                         case 4:
  24.                         case 6:
  25.                         case 9:
  26.                         case 11:
  27.                                 System.out.println("您输入的月份有30天");
  28.                                 break;
  29.                         case 2:
  30.                                 System.out.println("您输入的月份有29天!");
  31.                                 break;
  32.                         default:
  33.                                 System.out.println("您输入的月份有误!");
  34.                                 break;
  35.                         }
  36.                        
  37.                 }else{
  38.                         System.out.println("您输入的年份不是闰年!");
  39.                         switch(month){
  40.                         case 1:
  41.                         case 3:
  42.                         case 5:
  43.                         case 7:
  44.                         case 8:
  45.                         case 10:
  46.                         case 12:
  47.                                 System.out.println("您输入的月份有31天!");
  48.                                 break;
  49.                         case 4:
  50.                         case 6:
  51.                         case 9:
  52.                         case 11:
  53.                                 System.out.println("您输入的月份有30天");
  54.                                 break;
  55.                         case 2:
  56.                                 System.out.println("您输入的月份有28天!");
  57.                                 break;
  58.                         default:
  59.                                 System.out.println("您输入的月份有误!");
  60.                                 break;
  61.                         }
  62.                 }
  63.                
  64.         }
  65. }
复制代码


感觉自己写的太麻烦了,有没有简单一点的方法?
作者: Andyhuai    时间: 2016-3-14 12:00
用switch太麻烦了!!!换个
作者: 神祈灬丨狂想曲    时间: 2016-3-14 13:26
吧switch换成if elseif 用区间判断
作者: 喧闹的世界    时间: 2016-3-14 14:32
Java提供了canlendar日历类,可以通过这个类来进行所有判断,你可以了解下,不谢!
作者: 0308lidong    时间: 2016-3-14 18:07
来学学习了!!
作者: dmadboy    时间: 2016-3-14 20:04
认真分析不难发现,1,3,5,7,8,10,12月是否闰年都不影响判断,完全可以提出来单独判断,还有月份错误判断,4,6,9,11月也可以单独判断,就闰年2月判断一下就行了
作者: 超人d咖啡也加糖    时间: 2016-3-14 20:06
用calendar类可以实现
作者: 兵蜂    时间: 2016-3-14 20:43
学习了,逐步简化代码!最直观的,对于我这种小白可以,谢谢了!
作者: 赵国政    时间: 2016-3-14 21:29
看着是挺麻烦的 来看有没有简单方法
作者: 大大阳    时间: 2016-3-14 22:00
干嘛要用switch?三种循环方式,你换其他的事实,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2