黑马程序员技术交流社区

标题: 这个程序false,true怎么写更简单点 [打印本页]

作者: 李志祥    时间: 2012-3-31 23:57
标题: 这个程序false,true怎么写更简单点
本帖最后由 李志祥 于 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();

作者: 张世豪    时间: 2012-4-1 04:37
我的提议只针对上边的这个事例,其他事例得根据情况判断,其实上面的事例的开始就给bool flag赋值为false,所以在下面的第一个if语句和catch中就不用在给flag赋值false了,还有就是最后的那个if语句,if语句本身就是只有在条件满足为true的时候才会执行,所以最后的那个if语句中的条件直接写上flag就行了。
作者: 曾驰文    时间: 2012-4-1 08:57
  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();

作者: 李志祥    时间: 2012-4-1 10:03
曾驰文 发表于 2012-4-1 08:57
int age = 0;
             int sum = 0;
             int i;

flag 不需要制成true
的时候好像不会输出最后这句程序
Console.WriteLine("五个人的平均年龄是{0}", sum / 5);
作者: 李志祥    时间: 2012-4-1 10:06
张世豪 发表于 2012-4-1 04:37
我的提议只针对上边的这个事例,其他事例得根据情况判断,其实上面的事例的开始就给bool flag赋值为false, ...

如兄弟如说的程序我试了试,输入五个正确的年龄后,好像不会输出最后这句程序
Console.WriteLine("五个人的平均年龄是{0}", sum / 5);
作者: 张世豪    时间: 2012-4-1 11:20
你理解错了,我的意思是开始就给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();

作者: 李志祥    时间: 2012-4-1 11:35
张世豪 发表于 2012-4-1 11:20
你理解错了,我的意思是开始就给bool flag赋值为false,所以在下面的第一个if语句和catch中就不用在给flag ...

呵呵,哥们是菜鸟,多谢兄弟一起探讨
作者: 张世豪    时间: 2012-4-1 11:49
李志祥 发表于 2012-4-1 11:35
呵呵,哥们是菜鸟,多谢兄弟一起探讨

没事的,大家互帮互助嘛。
作者: 徐刚    时间: 2012-4-1 18:09
李志祥 发表于 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();




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