黑马程序员技术交流社区
标题: 从本地文件中读取数据 [打印本页]
作者: 李云飞 时间: 2013-6-4 12:20
标题: 从本地文件中读取数据
今天做了一个题目,是从本地的一个文件里读出数据子对数据进行处理!题目如下: 求员工工资文件中,员工的最高工资、最低工资、平均工资。文件内容 :
张三|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; }
作者: chensc 时间: 2013-6-4 12:30
学习学习!
作者: 李云飞 时间: 2013-6-6 13:48
好的 谢谢你了
作者: 风雪再现 时间: 2013-6-6 15:13
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:03
本帖最后由 轮回 于 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);
上面的代码是取出最大值的方法,最小值的方法类似,平均值只需要将所有的加起来除以个数就行,同样的方法输出即可
加油!!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |