求大神指教 C# 用foreach循环完成

循环录入5个人的年龄并计算平均年龄,如果录入的数据出现负数或大于100的数,立即停止输入并报错.... 循环录入5个人的年龄并计算平均年龄,如果录入的数据出现负数或大于100的数,立即停止输入并报错. 展开
 我来答
咖喱小西瓜
2013-11-26 · TA获得超过186个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:203万
展开全部
            int[] Age = new int[5];
            int index = 0;
            foreach (int age in Age)
            {
                Age[index] = Convert.ToInt32(Console.ReadLine());
                if (Age[index] < 0 || Age[index] > 100)
                {
                    Console.WriteLine("输入错误");
                    break;
                }
                index++;
            }
            int sum = 0;
            foreach (int age in Age)
            {
                sum += age;
            }
            Console.WriteLine("平均年龄为:" + sum / Age.Length);
            Console.Read();
追问
求大神给加上注释~~~~~
追答

我完善了一下添加了一个flag变量,如果不符合规则就不输出平均分

bool flag = true;      //记录是否符合规则
            int[] Age = new int[5];//新建一个年龄数组,大小为5
            int index = 0;         //用于记录对应下标的变量
            //foreach循环输入年龄
            foreach (int age in Age)
            {
                Age[index] = Convert.ToInt32(Console.ReadLine());//获取用户输入数据
                //不符合规则报错
                if (Age[index] < 0 || Age[index] > 100)
                {
                    Console.WriteLine("输入错误");
                    flag = false; 
                    break;
                }
                //下标自加
                index++;
            }

            if (flag)
            {
                int sum = 0;//统计总年龄变量
                foreach (int age in Age)
                {
                    sum += age;//循环统计总年龄
                }
                Console.WriteLine("平均年龄为:" + sum / Age.Length);//输出平均年龄
            }
            Console.Read();
li2008kui
2013-11-26 · TA获得超过429个赞
知道答主
回答量:66
采纳率:0%
帮助的人:42.6万
展开全部
using System;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        int[] age = { 0, 1, 2, 3, 4 };
        bool flag = true;
        
        foreach (var i in age)
        {
            try
            {
                Console.WriteLine("请输入第{0}个人的年龄:", i + 1);
                age[i] = Convert.ToInt32(Console.ReadLine());
            }
            catch (Exception ex)
            {
                Console.WriteLine("出现错误!" + ex.Message);
                flag = false;
                break;
            }
            
            if (age[i] < 0)
            {
                Console.WriteLine("年龄不能为负数!");
                flag = false;
                break;
            }
            else if (age[i] > 100)
            {
                Console.WriteLine("年龄不能>100!");
                flag = false;
                break;
            }
        }
        
        if (flag)
        {
            Console.WriteLine("5个人的平均年龄为" + age.Sum() / 5 + "岁。");
        }
        
        Console.Read();
    }
}

这道题其实不适合用foreach来做,有点怪异也比较勉强。上述代码用foreach实现了5个人年龄的输入和有效性判断,并在后面利用了Linq中对整型数组提供的扩展方法Sum()进行了求和,从来得到平均年龄,当然也可以再用一个foreach来遍历。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式