C# 未使用循环正确求平均值的数组 名称空间文件和数组 { 公共部分类Form1:Form { 公共表格1() { 初始化组件(); } 私有无效按钮3\u单击(对象发送者,事件参数e) { 这个。关闭(); } 私有无效按钮1\u单击(对象发送者,事件参数e) { StreamReader输入文件; int-doctor=0; 双倍合计=0,平均值=0; 字符串名,DocN; 字符串[]医生=新字符串[3]{“D.ABRAMS,MD”,“D.JARVIC,MD”,“T.PANOS,MD”}; int[]收缩=新的int[5]; int[]舒张期=新int[5]; OpenFileDialog openFile=新建OpenFileDialog(); if(openFile.ShowDialog()==DialogResult.OK) { inputFile=File.OpenText(openFile.FileName); 而(!inputFile.EndOfStream) { name=inputFile.ReadLine(); 对于(int i=0;i

C# 未使用循环正确求平均值的数组 名称空间文件和数组 { 公共部分类Form1:Form { 公共表格1() { 初始化组件(); } 私有无效按钮3\u单击(对象发送者,事件参数e) { 这个。关闭(); } 私有无效按钮1\u单击(对象发送者,事件参数e) { StreamReader输入文件; int-doctor=0; 双倍合计=0,平均值=0; 字符串名,DocN; 字符串[]医生=新字符串[3]{“D.ABRAMS,MD”,“D.JARVIC,MD”,“T.PANOS,MD”}; int[]收缩=新的int[5]; int[]舒张期=新int[5]; OpenFileDialog openFile=新建OpenFileDialog(); if(openFile.ShowDialog()==DialogResult.OK) { inputFile=File.OpenText(openFile.FileName); 而(!inputFile.EndOfStream) { name=inputFile.ReadLine(); 对于(int i=0;i,c#,arrays,loops,while-loop,C#,Arrays,Loops,While Loop,运行程序时,我得到以下收缩平均值:184.6(正确),312(错误) 我尝试在循环结束时重置数组,但没有解决任何问题。您没有为第二组测量值的总计和平均值重置变量。您没有为第二组测量值的总计和平均值重置变量。其他人指出了本例中的问题,但这是在函数顶部声明变量的症状。如果您在使用它们的位置附近声明了它们,那么很明显哪些变量适用于整个函数,哪些变量的作用域仅适用于循环内部 像这样: namespace Files_and_Arrays_II { public partial class For

运行程序时,我得到以下收缩平均值:184.6(正确),312(错误)


我尝试在循环结束时重置数组,但没有解决任何问题。

您没有为第二组测量值的总计和平均值重置变量。

您没有为第二组测量值的总计和平均值重置变量。

其他人指出了本例中的问题,但这是在函数顶部声明变量的症状。如果您在使用它们的位置附近声明了它们,那么很明显哪些变量适用于整个函数,哪些变量的作用域仅适用于循环内部

像这样:

namespace Files_and_Arrays_II
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            StreamReader inputFile;
            int doctor = 0;
            double total = 0, average_sys = 0;
            string name, DocN;

            string[] doctors = new string[3] { "D. ABRAMS, MD", "D. JARVIC, MD", "T. PANOS, MD" };
            int[] systolic = new int[5];
            int[] diastolic = new int[5];

            OpenFileDialog openFile = new OpenFileDialog();

            if (openFile.ShowDialog() == DialogResult.OK)
            {
                inputFile = File.OpenText(openFile.FileName);
                while (!inputFile.EndOfStream)
                {
                    name = inputFile.ReadLine();
                    for (int i = 0; i < 5; i++)
                    {
                        systolic[i] = int.Parse(inputFile.ReadLine());
                        diastolic[i] = int.Parse(inputFile.ReadLine());
                    }

                    //Calculates average for systolic
                    for (int count = 0; count < systolic.Length; count++)
                    {
                        total += systolic[count];
                    }
                    average_sys = total / 5;

                    doctor = int.Parse(inputFile.ReadLine());
                    DocN = doctors[doctor];
                    listBox1.Items.Add(name + "\t" + average_sys + "\t" + DocN);

                }               
            }
        }
    }
}
string name=inputFile.ReadLine();
//计算收缩压的平均值
双倍合计=0;
对于(int count=0;count

更好的做法是,使用
var
而不是在两个位置设置变量类型并冒出错的风险。

其他人已经指出了这种情况下的问题,但这是在函数顶部声明变量的症状。如果您在使用它们的位置附近声明了它们,那么很明显哪些变量适用于整个函数,哪些变量的作用域仅适用于循环内部

像这样:

namespace Files_and_Arrays_II
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            StreamReader inputFile;
            int doctor = 0;
            double total = 0, average_sys = 0;
            string name, DocN;

            string[] doctors = new string[3] { "D. ABRAMS, MD", "D. JARVIC, MD", "T. PANOS, MD" };
            int[] systolic = new int[5];
            int[] diastolic = new int[5];

            OpenFileDialog openFile = new OpenFileDialog();

            if (openFile.ShowDialog() == DialogResult.OK)
            {
                inputFile = File.OpenText(openFile.FileName);
                while (!inputFile.EndOfStream)
                {
                    name = inputFile.ReadLine();
                    for (int i = 0; i < 5; i++)
                    {
                        systolic[i] = int.Parse(inputFile.ReadLine());
                        diastolic[i] = int.Parse(inputFile.ReadLine());
                    }

                    //Calculates average for systolic
                    for (int count = 0; count < systolic.Length; count++)
                    {
                        total += systolic[count];
                    }
                    average_sys = total / 5;

                    doctor = int.Parse(inputFile.ReadLine());
                    DocN = doctors[doctor];
                    listBox1.Items.Add(name + "\t" + average_sys + "\t" + DocN);

                }               
            }
        }
    }
}
string name=inputFile.ReadLine();
//计算收缩压的平均值
双倍合计=0;
对于(int count=0;count

更好的方法是,使用
var
而不是在两个位置设置变量类型并冒出错的风险。

唯一使用
displastic
数组的代码只是用来填充它,没有其他引用它的代码。计算舒张平均值并输出结果的代码在哪里?我看不到。你打算在阅读下一行时保留一行的
总数吗?我猜您刚刚忘记了内部循环末尾的
total=0
。嗯,您没有重置
total
。仅供参考:通过使用调试器()可以很容易地找到这样的错误——比如变量没有您相信/期望的值——奇怪的是,您在while循环中进行这种平均计算。在内部加载数组,在加载后计算外部平均值。使用
舒张压
数组的唯一代码仅用于填充它,没有其他引用。计算舒张压平均值并输出结果的代码在哪里?我看不到。你打算在阅读下一行时保留一行的
总数吗?我猜您刚刚忘记了内部循环末尾的
total=0
。嗯,您没有重置
total
。仅供参考:通过使用调试器()可以很容易地找到这样的错误——比如变量没有您相信/期望的值——奇怪的是,您在while循环中进行这种平均计算。在内部加载数组,在加载后计算外部平均值。是的。在许多语言都需要的时候,编码风格(和指导者)就已经演变成了一种症状,而且还没有朝着更好的实践方向发展。我见过在学校里把顶级的变量称为“更好的风格”。曾经是真的;不是今天。欢迎来到编程,在编程中,您认为自己所知道的一切实际上只是一个瞬间情况的快照