這是我目前的代碼
string filename = @"marks.txt"。
try
{
StreamReader reader = new StreamReader(filename);
using (reader)
{
int lineNum = 0;
string line = reader.ReadLine()。
while (line != null)
{
lineNum ;
Console.WriteLine("{0}"/span>, line)。
line = reader.ReadLine()。
}
Console.WriteLine(reader.ReadToEnd())。
}
}
catch (FileNotFoundException)
{
Console.Error.WriteLine("無法找到檔案{0}",檔案名)。
}
catch (DirectoryNotFoundException)
{
Console.Error.WriteLine("檔案路徑中無效的目錄。")。
}
catch (IOException)
{
Console.Error.WriteLine("無法打開檔案{0}",檔案名)。
}
我想讓它讀取有一堆分數和名字的檔案,并將它們分成兩個獨立的陣列,這樣我就可以列印出誰得到了最高分和最低分,以及平均分,還可以把所有超過某個分數(如80分)的人寫進一個新檔案。
編輯。 該檔案大約20行的內容大致是這樣的:
50 Adam
23 Jennifer
85 Sanjay
uj5u.com熱心網友回復:
假設你的檔案有這樣的標記和名字:
John Doe, 89。
大衛-史密斯,74。
拉姆庫馬爾-孫達拉揚,85。
在你讀行的代碼中,你可以像這樣分割標記:
string line = reader.ReadLine();
var tokens = line.Split(', ');
string name = tokens[0] 。
int marks = int.Parse(tokens[1] )。)
如果輸入的格式不正確,你將需要處理錯誤。
一旦你有了名稱和標記,你可以將它們存盤在字典中或兩個不同的陣列中,并對這些值進行操作。
uj5u.com熱心網友回復:
在這里你可以:
string[] lines = File.ReadAllLines(@"file.txt"/span>) 。
var scores =
線條
.Select(x => x.Split(new[] { ' }, 2)
.Select(x => new { name = x[1], score = int.Parse(x[0] })
.ToArray()。
string highest = scores.OrderByDescending(x => x.score).Select(x => x.name) .First();
string lowest = scores.OrderBy(x => x.score).Select(x => x.name).First()。
double average = scores.Select(x => x.score).Average()。
var over80 = scores.Where(x => x.score > 80).ToArray() 。
File.WriteAllLines(@"output.txt", over80.Select(x => $"{x.score} {x.name}" >)。
現在,如果你有兩個或兩個以上的人擁有最高或最低的分數,那么你需要這樣做:
string highest = String.Join(", ", scores.ToLookup(x => x.score, x => x.name) [scores.Max(x => x.score)]) 。
string lowest = String.Join(", ", scores.ToLookup(x => x.score, x => x.name)[scores.Min(x => x.score)])。)
uj5u.com熱心網友回復:
讓我們假設你的檔案包含如下資料 abc:91|bcd:92|edr:93 你可以先用"|"分割檔案,然后用": "符號分割,然后像這樣填充兩個陣列
string fileName = @"marks.txt";
//string strData = "ABC:91|BCD:92|EDR:93";
StreamReader sr = new StreamReader(fileName)。
string strData = sr.ReadToEnd();
sr.Close()。
ArrayList alName = new ArrayList()。
ArrayList alMarks = new ArrayList()。
string[] strSplit1 = strData.Split(new char[] { '|'/span> }, StringSplitOptions.RemoveEmptyEntries) 。
for (int i = 0; i < strSplit1.Length; i )
{
string[] strSplit2 = strSplit1[i]. Split(new char[] { ' :' }, StringSplitOptions.RemoveEmptyEntries) 。
if (strSplit2.Length > 1)
{
alName.Add(strSplit2[0])。
alMarks.Add(strSplit2[1])。
}
string[] arrName = (string[])alName.ToArray(typeof(string))。 string[] arrMarks = (string[])alMarks.ToArray(typeof(string));
如果你需要更多幫助,請分享樣本/模板檔案。
為了將ArrayList轉換為Array,請使用下面幾行代碼
。string[] arrName = (string[])alName.ToArray(typeof(string))。 string[] arrMarks = (string[])alMarks.ToArray(typeof(string));
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/310453.html
標籤:
