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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李云飞 中级黑马   /  2013-6-4 12:20  /  2098 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天做了一个题目,是从本地的一个文件里读出数据子对数据进行处理!题目如下: 求员工工资文件中,员工的最高工资、最低工资、平均工资。
文件内容  :
张三|2000
王五|2500
赵六|3500
我的思路是将文件读出在经过处理只取出员工的工资并将其放到一个整形数组中,在遍历数组求出最高工资、最低工资、平均工资。我在从文件中取出数据要得到员工的工资存到一个整形数组中去的方法我觉得不是很可取,不知哪位大虾有更好的方法请给小弟指点指点。还想请问下可以用StreamRead类中的相关方法将此文件中的数据完整读出么?我在处理的时候汉字出现了乱码?形式如下:????|2000 。谢谢!
  public static int[]getSalay()       {             //从本地文件中读取数据存入一个string数组中            string[]salArr = File.ReadAllLines(@"G:\salary.txt", Encoding.Default);            //将string数组转换成字符串的形式            string str ="";            for (int i = 0; i < salArr.Length; i++)            {                str = str + salArr;            }            //用竖线(|)及空格( )对字符串经行切割,并将切割后的字符串存入到一个string数组中            string[]strArr = str.Split('|', ' ');            //取出string数组中的工资项,并将工资转换为整形存入整形数组中            int[]salay = { Convert.ToInt32(strArr[1]), Convert.ToInt32(strArr[3]), Convert.ToInt32(strArr[5])};            returnsalay;           }

点评

麻烦把代码 编辑一哈 这样大家看起来才清晰 呵呵  发表于 2013-6-6 12:58

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

5 个回复

倒序浏览
学习学习!
回复 使用道具 举报
好的 谢谢你了
回复 使用道具 举报
            string path = @"E:\salary.txt";  //文件存放路径
            string[] strs = File.ReadAllLines(path, Encoding.Default);    //按行读取文件内容
            string maxName = "";
            int maxSalary = 0;
            string minName = strs[0].Split('|')[0];//将每行的字符串按“|”分开,这个存姓名
            int minSalary = Convert.ToInt32(strs[0].Split(',')[1]); //这个村工资
            int sum = 0;
            int count = 0;
            for (int i = 0; i < strs.Length; i++)
            {
                if (!string.IsNullOrEmpty(strs[i]))//判断读的行是否为空,为空时不执行
                {
                    count++;
                    string[] array = strs[i].Split(',');
                    if (Convert.ToInt32(array[1]) > maxSalary)
                    {
                        maxSalary = Convert.ToInt32(array[1]);
                        maxName = array[0];
                    }
                    if (Convert.ToInt32(array[1]) < minSalary)
                    {
                        minSalary = Convert.ToInt32(array[1]);
                        minName = array[0];
                    }
                    sum += Convert.ToInt32(array[1]);
                }

            }

            Console.WriteLine("最高工资者为:{0},工资为:{1}", maxName, maxSalary.ToString());
            Console.WriteLine("最低工资者为:{0},工资为:{1}", minName, minSalary.ToString());
            Console.WriteLine("平均工资为:{0}", sum / strs.Length);

希望对你有用
回复 使用道具 举报
本帖最后由 轮回 于 2013-6-6 16:06 编辑

string[] lines = System.IO.File.ReadAllLines(@"d:\1.txt", Encoding.Default);//文件路径

            string maxName = "";//记录工资最高者的姓名
            int maxScore = -1;//记录最高工资

            for (int i = 0; i < lines.Length; i++)
            {
                string line = lines;
                string[] strs = line.Split('|');//以“|”分割字符串
                string name = strs[0];
                string age = strs[1];
                string score = strs[2];

                int sco = Convert.ToInt32(score);//将工资转换为int类型

                if (sco > maxScore)//遇到工资更大的,最大值进行交换
                {
                    maxScore = sco;
                    maxName = name;
                }   
            }
            Console.WriteLine("工资最高者是:{0},最高工资是:{1}", maxName, maxScore);

上面的代码是取出最大值的方法,最小值的方法类似,平均值只需要将所有的加起来除以个数就行,同样的方法输出即可
加油!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马