帮助排序文本文件

罗兰斯富贸易

活跃的成员
加入
2019年2月3日
消息
43
地点
布里奇德
编程经验
Beginner
所以我创建了福彩12选5走势图基本游戏,它有福彩12选5走势图简单的评分系统,其中分数和播放器名称(两个变量)保存到文本文件,排行榜。我有福彩12选5走势图问题通过分数来排序文件而不是名称,我不能让它工作.```

C#:
        // reads the leaderboard txt and displays it in listbox

        private void scoreBoard()

        {

            List<string> lines = File.ReadLines(@"E:\College Year 3\Computer Programming 2\Minefield\Leaderboard.txt").ToList();

            List<int> score = lines.Select(s => Convert.ToInt32(s)).ToList();

            score.Sort();

            foreach (int r in score)

            {

               listBox1.Items.Add(r);

            }



        }

如果需要,我可以提供任何其他代码
这就是我试过的代码,但我收到了列表中的错误<int>线路不是格式不正确。

如果有人可以在正确的方向上引导我会很棒
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,892
地点
切萨皮克,va.
编程经验
10+
除了讲述其中福彩12选5走势图输入行不能转换为INT32,因为它是错误的格式。也许你有福彩12选5走势图空白的行,或短线,只有字母或标点符号,或一行,具有十六进制数等。

切勿使用convert.toint32(),除非您绝对信任并控制输入。相反,使用int.tryparse()。
 

罗兰斯富贸易

活跃的成员
加入
2019年2月3日
消息
43
地点
布里奇德
编程经验
Beginner
除了讲述其中福彩12选5走势图输入行不能转换为INT32,因为它是错误的格式。也许你有福彩12选5走势图空白的行,或短线,只有字母或标点符号,或一行,具有十六进制数等。

切勿使用convert.toint32(),除非您绝对信任并控制输入。相反,使用int.tryparse()。
谢谢回复
我最初确实有int.trymarse并且具有相同的错误,只有字母或空行没有任何行
文本文件是名称分数
例如
丹60.
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,892
地点
切萨皮克,va.
编程经验
10+
好吧,证据在于。附上你的"Leaderboard.txt"文件在下福彩12选5走势图回复中。
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,892
地点
切萨皮克,va.
编程经验
10+
它有福彩12选5走势图简单的评分系统,其中分数和播放器名称(两个变量)保存到文本文件,排行榜.Text
文件中每行的格式是什么?如果一条线看起来像:
Code:
Alex 8123487

那么这可能会抛出您目前看到的相同异常:
C#:
string line = "Alex 8123487"
int score = Convert.ToInt32(line);

您需要做的只是从线路中拔出数字并解析或转换。
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,892
地点
切萨皮克,va.
编程经验
10+
为我提供试图在手机上遵循此帖子的权利。我没有看到帖子#3中的样本。

因此,这正是我猜到的第5篇猜测的问题。在尝试解析或转换之前,您需要将数字拉出行。

我的建议是拥有福彩12选5走势图课程来持有玩家的名称和得分。就像是:
C#:
class PlayerScore
{
    public string Name { get; set; }
    public int Score { get; set; }
}

并且具有以下伪代码:
Code:
playerScores = new List<PlayerScore>()
foreach line in the score file
    parts = line.Split(' ')
    name = line[0]
    if int.TryParse(line[1], out score) is successful
        playerScores.Add(new PlayerScore() { Name = name, Score = score });

Then once you have your list of players and their scores, it's a simple matter of calling the LINQ OrderByDescending() method to sort things:
C#:
var sortedScores = playerScores.OrderByDescending(playerScore => playerScore.Score).ToList();
 

罗兰斯富贸易

活跃的成员
加入
2019年2月3日
消息
43
地点
布里奇德
编程经验
Beginner
为我提供试图在手机上遵循此帖子的权利。我没有看到帖子#3中的样本。

因此,这正是我猜到的第5篇猜测的问题。在尝试解析或转换之前,您需要将数字拉出行。

我的建议是拥有福彩12选5走势图课程来持有玩家的名称和得分。就像是:
C#:
class PlayerScore
{
    public string Name { get; set; }
    public int Score { get; set; }
}

并且具有以下伪代码:
Code:
playerScores = new List<PlayerScore>()
foreach line in the score file
    parts = line.Split(' ')
    name = line[0]
    if int.TryParse(line[1], out score) is successful
        playerScores.Add(new PlayerScore() { Name = name, Score = score });

Then once you have your list of players and their scores, it's a simple matter of calling the LINQ OrderByDescending() method to sort things:
C#:
var sortedScores = playerScores.OrderByDescending(playerScore => playerScore.Score).ToList();
对不起,迟到的回复它很晚才居住哈哈
谢谢你的建议将稍后再次出现,我目前拥有作为变量存储的分数和名称,所以它是一种而不是那些变量有那个玩家核课程吗?或者你的意思是,阅读文本文件取出数据,然后将其存储到播放器类?,抱歉漂亮新的处理文件和数组lol
 
Last edited:

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,892
地点
切萨皮克,va.
编程经验
10+
变量只能容纳单个值。您说,您的领导人档案包含多个名称和分数。

The object oriented way of doing things is to keep related data together. Hence that PlayerScore class to keep the name and score together.

如果您在50-60s中编写代码或正在使用传统的基本,那么旧方法是保持并行名称阵列和分数。因此,当您按分数排序时,您需要确保将名称与其相应的分数保持同步。这曾经是学习C和Pascal之前的标准练习,然后教授如何使用结构。这项运动意味着说明涉及保持事物的痛苦。
 

罗兰斯富贸易

活跃的成员
加入
2019年2月3日
消息
43
地点
布里奇德
编程经验
Beginner
变量只能容纳单个值。您说,您的领导人档案包含多个名称和分数。

The object oriented way of doing things is to keep related data together. Hence that PlayerScore class to keep the name and score together.

如果您在50-60s中编写代码或正在使用传统的基本,那么旧方法是保持并行名称阵列和分数。因此,当您按分数排序时,您需要确保将名称与其相应的分数保持同步。这曾经是学习C和Pascal之前的标准练习,然后教授如何使用结构。这项运动意味着说明涉及保持事物的痛苦。
我今晚会告诉它
 

罗兰斯富贸易

活跃的成员
加入
2019年2月3日
消息
43
地点
布里奇德
编程经验
Beginner
嘿,谢谢你能够弄清楚如何让它与提供的代码一起使用,但我已经设法搞定了它

C#:
string[] hard = File.ReadAllLines(@"E:\College Year 3\Computer Programming 2\Minefield\LeaderboardHard.txt");
                var orderedHard = hard.OrderByDescending(x => int.Parse(x.Split(' ')[1]));

                foreach (var score in orderedHard)
                {
                    listBox1.Items.Add(score);
                }

我也增加了福彩12选5走势图难度级别,所以我现在已经在3级工作了,我唯一的问题是这个名字和得分在列表框中非常靠近,有没有办法造成这种方式并使它更好地看起来有点更好没有搞砸代码?
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,892
地点
切萨皮克,va.
编程经验
10+
在WinForms中,使用ListView而不是列表框。在WPF中,您只需在XAML中设置间距而且甚至没有触摸代码(但这假定您实际使用WPF使用绑定使用WPF)。在WebForms中,正确的事情是使用转发器来填充表元素,但大多数人"hack"通过插入非破坏空间来列出框。
 

纳帕沃

游戏瘾君子
加入
10月17日,2020年
消息
8
地点
比利时(GMT + 1)
编程经验
1-3
我想知道你的文字文件看起来像什么,

如果我不得不这样做,我的样子看起来像这样;

玩家1; 2000年
玩家2; 4000.
玩家3; 5000

然后我可以将PlayerName和PlayerScore读入结构,并按点对结构列表进行排序。

对不起,管理员只是新的......犯了福彩12选5走势图错误....帖子可以删除
 
Last edited:

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,892
地点
切萨皮克,va.
编程经验
10+
查看最后一行#3查看OP的文件的样子。
 
最佳 底部