【问题标题】:Reading more than one integer on a line in a listbox在列表框中的一行上读取多个整数
【发布时间】:2015-04-27 20:13:50
【问题描述】:

所以我有一个按钮,它可以读取一个文件,并将该文件的内容放入一个列表框中。当我按下按钮时,显示的是:

吉姆 6 8 9

蒂姆 7 5 6

法案 4 10 8

我想做的是制作一个单独的按钮,将每个人的分数相加,然后找到他们的平均值。一旦它计算出这个人的平均值,那么我希望平均值代替 3 个分数。

我目前的代码只取每个人的第一个分数,然后将所有分数相加并在消息框中显示结果。

这是我现在的代码:

Dim scorevalues As New List(Of Integer)
    For Each line As String In System.IO.File.ReadLines(file1)
        Dim scores As System.Text.RegularExpressions.Match = System.Text.RegularExpressions.Regex.Match(line, "\d+")
        If scores.Success Then
            scorevalues.Add(Convert.ToInt32(scores.Value))
        End If
    Next
    listbox1.DataSource = scorevalues

    Dim Scoretots As Integer = 0

    For scores2 = 0 To listbox1.Items.Count - 1
        Scoretots = Scoretots + listbox.Items(scores2)
    Next
    MessageBox.Show("Total: " & Scoretots.ToString)

这是我的代码产生的:

6

7

4

然后一个消息框显示 28

【问题讨论】:

标签: vb.net visual-studio-2010 visual-studio visual-studio-2012


【解决方案1】:

这会让你继续前进。和这个问题一样https://stackoverflow.com/questions/29902255/working-out-averages-of-numbers-in-a-list-box-line/29902583#29902583

Sub Main()
    Dim scores As String = "Bill 10 9 8"
    Dim score As System.Text.RegularExpressions.MatchCollection = System.Text.RegularExpressions.Regex.Matches(scores, "\d+")

    Dim sum As Integer = 0
    For i As Integer = 0 To score.Count - 1
        sum += Convert.ToInt32(score.Item(i).Value)
        Console.WriteLine(score.Item(i).Value)
    Next
    Dim average = sum / score.Count
    Console.WriteLine("Average: {0}", average)

    Console.ReadLine()
End Sub

结果:

【讨论】:

  • 作为字符串的暗分数应该是列表框而不是我放的。如果我希望 lisbox 位于您放置 Bill 的位置,我是否必须将列表框转换为字符串
  • @Bradon 这是一个让您朝着正确方向前进的代码示例,它不适合直接用于解决您的问题。
【解决方案2】:

我相信您的主要问题是您的正则表达式调用仅捕获第一场比赛。 将变量“scores”更改为 MatchCollection 并使用正则表达式函数的 Matches 函数。 然后,您可以使用 For...Each 解析匹配项并将它们添加到列表中,计算您的平均值等。

【讨论】:

  • 当我使用 matchcollection 并且匹配时,这些代码部分会在蓝色下划线; If score.Success Then and also; scorevalues.Add(Convert.ToInt32(scores.Value))
  • 它说他们不是matchcollection的成员
  • 上面的第二个答案基本上已经为您解答了。我只是想给你一些提示,这样你就可以自己弄清楚其中的一部分,因为你是一名学生。我不相信只有给你完整的答案才能完成任何真正的学习。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多