获得文本文件的最高编号

时间:2013-12-12 17:27:17

标签: c#

所以我有这样一个简单的蛇游戏,我愿意有一个带有文本的标签:“高分”然后是另一个标签,它可以从文本文件中找到最高分数。

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”标签上文本文件的最高值。

3 个答案:

答案 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