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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李志祥 中级黑马   /  2012-3-31 23:57  /  2720 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李志祥 于 2012-4-18 15:08 编辑

//循环输入五个人的年龄并计算平均年龄,如果录入的数据出现负数或者大于100,立即停止输入并报错。
       int age = 0;
            int sum = 0;
            int i;
            bool flag = false;
            for ( i = 0; i < 5; i++)
            {
                Console.WriteLine("输入第{0}个人的年龄", i + 1);
                try
                {
                    age = Convert.ToInt32(Console.ReadLine());
                    if (age < 0 || age >= 100)
                    {
                        Console.WriteLine("输入的年龄不合法,错误,程序终止");
                        flag = false;
                        break;
                    }
                    sum = sum + age;
                    flag = true;
                }
                catch
                {
                    Console.WriteLine("输入的年龄不是数字,错误,程序终止");
                    flag = false;
                    break;
                }

            }
            if(flag==true)     //if(i<5==false)
            {
                Console.WriteLine("五个人的平均年龄是{0}", sum / 5);
            }


            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

8 个回复

倒序浏览
我的提议只针对上边的这个事例,其他事例得根据情况判断,其实上面的事例的开始就给bool flag赋值为false,所以在下面的第一个if语句和catch中就不用在给flag赋值false了,还有就是最后的那个if语句,if语句本身就是只有在条件满足为true的时候才会执行,所以最后的那个if语句中的条件直接写上flag就行了。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
  int age = 0;
             int sum = 0;
             int i;
             bool flag = false;
             for ( i = 0; i < 5; i++)
             {
                 Console.WriteLine("输入第{0}个人的年龄", i + 1);
                 try
                 {
                     age = Convert.ToInt32(Console.ReadLine());
                     if (age < 0 || age >= 100)
                     {
                         Console.WriteLine("输入的年龄不合法,错误,程序终止");
                         flag = false;
                         break;
                     }
                     sum = sum + age;
                  //flag 不需要制成true
                 }
                 catch
                 {
                     Console.WriteLine("输入的年龄不是数字,错误,程序终止");
                     flag = false;
                     break;
                 }

            }
             if(flag)     //flag直接是bool变量   直接判断
             {
                 Console.WriteLine("五个人的平均年龄是{0}", sum / 5);
             }


            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
曾驰文 发表于 2012-4-1 08:57
int age = 0;
             int sum = 0;
             int i;

flag 不需要制成true
的时候好像不会输出最后这句程序
Console.WriteLine("五个人的平均年龄是{0}", sum / 5);

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
张世豪 发表于 2012-4-1 04:37
我的提议只针对上边的这个事例,其他事例得根据情况判断,其实上面的事例的开始就给bool flag赋值为false, ...

如兄弟如说的程序我试了试,输入五个正确的年龄后,好像不会输出最后这句程序
Console.WriteLine("五个人的平均年龄是{0}", sum / 5);
回复 使用道具 举报
你理解错了,我的意思是开始就给bool flag赋值为false,所以在下面的第一个if语句和catch中就不用在给flag赋值false了,还有就是最后的那个if语句,if语句本身就是只有在条件满足为true的时候才会执行,所以最后的那个if语句中的条件直接写上flag就行了。但是在try里面的flag=true是必需要的,你再试试。改成这样:
int age = 0;
            int sum = 0;
            int i;
            bool flag = false;
            for (i = 0; i < 5; i++)
            {
                Console.WriteLine("输入第{0}个人的年龄", i + 1);
                try
                {
                    age = Convert.ToInt32(Console.ReadLine());
                    if (age < 0 || age >= 100)
                    {
                        Console.WriteLine("输入的年龄不合法,错误,程序终止");
                       
                        break;
                    }
                    sum = sum + age;
                    flag = true;
                }
                catch
                {
                    Console.WriteLine("输入的年龄不是数字,错误,程序终止");
                  
                    break;
                }

            }
            if (flag)     //if(i<5==false)
            {
                Console.WriteLine("五个人的平均年龄是{0}", sum / 5);
            }


            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
张世豪 发表于 2012-4-1 11:20
你理解错了,我的意思是开始就给bool flag赋值为false,所以在下面的第一个if语句和catch中就不用在给flag ...

呵呵,哥们是菜鸟,多谢兄弟一起探讨
回复 使用道具 举报
李志祥 发表于 2012-4-1 11:35
呵呵,哥们是菜鸟,多谢兄弟一起探讨

没事的,大家互帮互助嘛。
回复 使用道具 举报
李志祥 发表于 2012-4-1 10:03
flag 不需要制成true
的时候好像不会输出最后这句程序
Console.WriteLine("五个人的平均年龄是{0}", sum  ...

他忘了将flag的初始值设为true,所以不会输出最后那句。改成这样就OK了:
             int age = 0;
             int sum = 0;
             int i;
             bool flag = true; \\初始为true
             for ( i = 0; i < 5; i++)
             {
                 Console.WriteLine("输入第{0}个人的年龄", i + 1);
                 try
                 {
                     age = Convert.ToInt32(Console.ReadLine());
                     if (age < 0 || age >= 100)
                     {
                         Console.WriteLine("输入的年龄不合法,错误,程序终止");
                         flag = false;
                         break;
                     }
                     sum = sum + age;
                  }
                 catch
                 {
                     Console.WriteLine("输入的年龄不是数字,错误,程序终止");
                     flag = false;
                     break;
                 }

             }
             if(flag)  //flag在没有输入错误的情况下值还是初始时的true
         {
                 Console.WriteLine("五个人的平均年龄是{0}", sum / 5);
             }

            Console.ReadKey();

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

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