所以我有这样一个简单的蛇游戏,我愿意有一个带有文本的标签:“高分”然后是另一个标签,它可以从文本文件中找到最高分数。
string lines = " \r\n" + SnkScore.Text;
File.AppendAllText("C:\\Users\\" + System.Environment.UserName +"\\Documents\\Data\\Scrn.txt", lines);
HghScore.Text = lines;
“Scrn.txt”是一个文本文件,其中包含用户在蛇游戏中获得的所有点数。
“SnkScore”是具有当前点数的标签,“HghScore”是高分标签,我愿意加载“Scrn.txt”的最高值,其中包含用户所拥有的所有积分。所以 重启它会显示“HghScore”标签上文本文件的最高值。
答案 0 :(得分:2)
如果你想使用Linq:
只获得一个最大数量: 解决方案1:
var max=File.ReadAllLines(@"C:\score.txt").Max(m=> m.ToInt());
解决方案2:
var max=File.ReadAllLines(@"C:\score.txt").Select(int.Parse).Max();
如果你想要一堆它们然后对它进行排序并从顶部取x号:
var topFive=File.ReadAllLines(@"C:\score.txt").Select(int.Parse).OrderByDescending(m=> m).Take(5);
就个人而言,我会在这种情况下使用TryParse,所以手动浏览每一行和“TryParsing”这会更好。
答案 1 :(得分:2)
假设score.txt文件永远不会包含无效分数,您可以使用LINQ(确保有using System.Linq;
语句):
int maxScore = File.ReadAllLines(@"C:\score.txt")
.Select(s => int.Parse(s))
.Max();
如果您想让您的程序更加强大,以下程序将进行转换 无效的行到0:
using System;
using System.Linq;
namespace HighScore
{
class Program
{
static void Main(string[] args)
{
string[] scores = {
"78",
"98",
"88",
"77",
"Bad score",
"124",
"3",
"678",
"4",
"123",
"456",
};
//scores = File.ReadAllLines(@"C:\score.txt");
int maxScore = scores.Select(line => {
int score = 0;
int.TryParse(line, out score);
return score;
}).Max();
Console.WriteLine("Maximum score is {0}", maxScore);
Console.ReadKey();
}
}
}
答案 2 :(得分:1)
解决方案:假设每个分数都在New-Line
。
static void Main(string[] args)
{
String [] lines= File.ReadAllLines(@"C:\score.txt");
long max = 0;
long score=0;
foreach (String line in lines)
{
if (Int64.TryParse(line, out score))
{
if (score > max)
max = score;
}
}
Console.WriteLine("Maximum Score is "+max);
}
输入文件: c:\score.txt
,其中包含以下scores
:
78
98个
88个
77个
124个
3
678个
4
123个
456
输出
Maximum Score is 678