C#基础,从文件中读取,通过写行进行输入,保存排序,控制台应用程序



我只学习了几周,还处于初级阶段。为了练习,我写了一个小程序,提示输入分数和名字,然后进行比较并给出反馈。请参阅此处:

static int highscore = 1000;
static void Main(string[] args)
{
///////////////////////////////////
Console.WriteLine("nnDer aktuelle Highscor ist:   {0} nn ", highscore);

Console.Write("nBitte gib Deinen Score ein:t");
int score = Convert.ToInt32(Console.ReadLine());
Console.Write("nBitte gib Deinen Namen  ein:t");
string spielerName = Console.ReadLine();

string highscoreSpielerName;

if (score <= highscore)
{
Console.WriteLine("nnPech gehabt {0}, Du hast keinen neuen Highscore.", spielerName);
}
else if (score > highscore)
{
int newHigsore = highscore + score - 1000;
int divHighscore = score - 1000;

Console.Clear();
Console.WriteLine("nnHerzlichen Glückwunsch, der neue Highscore ist {0} Punkte !! ", newHigsore);
Console.WriteLine("nnDer alte Highscore war {0} Pnkte und wurde um {1} Punkte übertroffen.", highscore, divHighscore);
Console.WriteLine("nn{0} hät den neuen Highscore mit {1} Punkten !", spielerName, newHigsore);
}
Console.ReadKey();
}

}

现在我想把它扩展如下:输入应该存储在一个文件(数组、列表(中,按最高分数排序,然后进行以下输出:

你是前十名,输出整个列表和排名。

运气不好,你没有新的高音。

由于我对数组、保存和覆盖不太了解,所以我只能呆在这里。如果你能在这里帮我就好了。到目前为止,这是我的方法:

static void Main(string[] args)
{
String[] zeilen = File.ReadAllLines(@"F:visual ProjekteNeuDatenLesenbinTestdatenGewinner.CSV");
foreach (string zeile in zeilen)
{
string[] daten = zeile.Split(';');
double rang = double.Parse(daten[0]);
string name = daten[1];
double punkte = double.Parse(daten[2]);
Console.WriteLine("Platz {0}t{1}tPunkte {2}", rang, name, punkte);
Console.ReadLine();

您可能想要使用对象。一旦创建了对象,就可以使用列表工具。这里包括Newtonsoft的一块金块。Json(用于序列化文件(还有林克的使用。

public class Scores
{
public string Name { get; set; }
public int Score { get; set; }
}
class Program
{
static void Main(string[] args)
{
var ScoreList = new List<Scores>();
ScoreList.Add(new Scores() { Name = "Alpha", Score = 98324 });
ScoreList.Add(new Scores() { Name = "Bravo", Score = 88099 });
ScoreList.Add(new Scores() { Name = "Charlie", Score = 12012 });
ScoreList.Add(new Scores() { Name = "Delta", Score = 76590 });
ScoreList.Add(new Scores() { Name = "Echo", Score = 87199 });
ScoreList.Add(new Scores() { Name = "Foxtrot", Score = 99832 });
ScoreList.Add(new Scores() { Name = "Golf", Score = 20204 });
ScoreList.Add(new Scores() { Name = "Hotel", Score = 37209 });
ScoreList.Add(new Scores() { Name = "India", Score = 08732 });
ScoreList.Add(new Scores() { Name = "Juliett", Score = 78782 });
ScoreList.Add(new Scores() { Name = "Kilo", Score = 99120 });
ScoreList.Add(new Scores() { Name = "Lima", Score = 76555 });
var saveScores = JsonConvert.SerializeObject(ScoreList);
File.WriteAllText(@"C:workScores.json", saveScores);
// read existin file
var fileRead= File.ReadAllText(@"C:workScores.json");
List<Scores> existingScores = JsonConvert.DeserializeObject<List<Scores>>(fileRead);
var highScores = existingScores.OrderByDescending(o => o.Score).Take(10).ToList();
}
}

最新更新