A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ↖落葉下♀媃媚 中级黑马   /  2013-3-29 11:05  /  1827 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//让用户输入一个年份,判断如果是润年,则输出true,如果不是则输出false。润年的判定(符合下面两个条件之一):
        //a、年份能够被400整除.(2000)     
        //b、年份能够被4整除但不能被100整除.(2008)
        
        static void Main(string[] args)
        {
               
                Console.WriteLine("请输入年份?");
                int year = int.Parse(Console.ReadLine());
               
                   if(year /400==0 || year/4==0&&year/100!=0)
                {
                    Console.WriteLine("true");
                  
                }
                else
                   {
                       Console.WriteLine("false");
                }
                  
            
           
            Console.ReadKey(); 这里我还用不用进行输入的是否是年份的判断?

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

7 个回复

倒序浏览
如果不进行输入的是否是年份的判断?这道题会不会按错误处理?应不应该使用try-catch?
回复 使用道具 举报
↖落葉下♀媃媚 发表于 2013-3-29 11:07
如果不进行输入的是否是年份的判断?这道题会不会按错误处理?应不应该使用try-catch? ...

这个我试了,要加是否是数字的判断,输入非数字类型的无法正确转化为int的。但是try...catch语句我听杨中科老师讲的是尽量不要使用它,程序中的异常不要都用Try....catch处理,要自己学会正确的处理。
不知道是否是您的答案呢????

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
↖落葉下♀媃媚 发表于 2013-3-29 11:07
如果不进行输入的是否是年份的判断?这道题会不会按错误处理?应不应该使用try-catch? ...

你首先要判断年份 的格式   不符合格式  就不要判断了 直接return。让他停止执行。判断是否是数字可以用try-catch  但是在程序中能不用就不用。 因为try了就会增加资源的占用。对程序的稳定行不好。有些时候不要只是判断数字类型的日期  中文日期的也有。得看你的项目需要了。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
  1.         static void Main(string[] args)
  2.         {
  3.                 Console.WriteLine("请输入年份?");
  4.                 int year = int.Parse(Console.ReadLine());
  5.                 if(year /400==0 || year/4==0&&year/100!=0)
  6.                         {
  7.                                 Console.WriteLine("true");  
  8.                         }
  9.                 else
  10.                         {
  11.                                 Console.WriteLine("false");
  12.                         }
  13.         }
复制代码
你的格式太乱了 我改了一下 虽然还是没看懂 但是至少顺序好看多了

我继续研究你的题 挺有意思的题

不过 你确定是被400整除?  假如1998年是闰年这么算?
回复 使用道具 举报
你的代码判断是否是闰年的逻辑关系运算符符号写错了,应该是求余 "%"
try```catch 可以使用,但是范围太广了  有人输入负数 也可以的,所以 你最好在试着逻辑关系式加点判断要大于0的数
比如 你的year :
year>=0,或者判断year必须为整数,来保证你输入的year只有两种情况,一种是符合年份要求的,一种是字母的,然后就可以try catch了

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
需要进行输入年份的判断,因为可能输入的是非数字、负数等。try-catch尽量少用。
判断逻辑最好写在一个单独的方法里。
如下:
        /// <summary>
        /// 从控制台获取年份
        /// </summary>
        /// <returns></returns>
        static int GetYear()
        {
            string inputStr;
            int year;
            //无限循环,直到输入正确的年份
            while (true)
            {
                inputStr = Console.ReadLine();
                //当是整数并且不是负数时,才是年份
                if (int.TryParse(inputStr, out year) && year >= 0)
                {
                    return year;
                }
                else
                {
                    Console.WriteLine("请输入正整数,表示年份");
                }
            }
        }

调用方法:
int year = GetYear();

另一问题:
if(year /400==0 || year/4==0&&year/100!=0)
/ 应写成 %

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
我感觉你这里需要进行年份格式的判断,因为如果不判断的话,用户如果输入的是字符串或者是一些小数负数的就可能会出现异常,此时应该try起来,以前看传智播客老师的视频时,老师说只要涉及到数据类型转化的地方尽量要try起来,防止出现非法字符或是异常。还有就是闰年应该是四年一闰,百年不润,四百年再润,
if((year % 400 == 0)||(year % 4 == 0)&&(year % 100 != 0))//闰年的计算方法 那个应该是%而不是/,你试试看,希望对你会有帮助!

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马