//循环输入五个人的年龄并计算平均年龄,如果录入的数据出现负数或者大于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
如兄弟如说的程序我试了试,输入五个正确的年龄后,好像不会输出最后这句程序
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);
}
李志祥 发表于 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);
}