在Visual Basic中对文本文件中的值求和

时间:2014-02-27 22:29:06

标签: vb.net sum text-files

我正在编写一个Visual Basic程序,它读取名为profit.txt的文件的信息。我的表单有一个菜单条,其设置类似于File-> Open File-> Exit

我现在坚持的程序部分是:

当用户选择文件 - >打开文件时,会出现一个打开的文件对话框。如果用户选择除profit.txt之外的任何内容,则会出现一个消息框,告诉他们不能使用该文件,也不会执行任何其他操作。如果用户确实选择了profit.txt,那么对该文件中的所有值求和,但不显示总和。

感谢下面的帮助,我可以打开文件,但不知道如何获取文件中所有元素的总和。在用户单击文本框中的某些单选按钮和复选框以及输入金额之前,实际上不会显示总和。然后,程序使用来自用户的信息,通过从文件中的值总和中减去给定的金额来获得最终利润。

这是我最近的代码。

    Option Strict On

    Imports System.IO

    Public Class Form1

           Private Sub menOpen_Click(sender As Object, e As EventArgs) Handles menOpen.Click
        Dim ofd As New OpenFileDialog
        ofd.Filter = "text files |*.txt|All Files|*.*"
        ofd.InitialDirectory =   Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)

         If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then
            Dim selectedFileName As String = System.IO.Path.GetFileName(ofd.FileName)
            If selectedFileName.ToLower = "profit.txt" Then
                Dim line As String
                Using reader As New StreamReader(ofd.OpenFile)
                    While Not reader.EndOfStream
                        line = reader.ReadLine
                        Console.WriteLine(line)
                    End While
                End Using
            Else
                MessageBox.Show("You cannot use that file!")
            End If
        End If
   End Sub

    Private Sub menExit_Click(sender As Object, e As EventArgs) Handles menExit.Click
        Me.Close()
    End Sub
End Class

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:2)

不要让您的OpenFileDialog与您的菜单名称相同。您可以使用System.IO.Path.GetFileName()来仅检索文件名部分(无路径)。然后将其与您的硬编码值进行比较:

Private Sub menOpen_Click(sender As Object, e As EventArgs) Handles menOpen.Click
    Dim OFD As New OpenFileDialog
    OFD.Filter = "text files |*.txt|All Files|*.*"
    If OFD.ShowDialog() = Windows.Forms.DialogResult.OK Then
        Dim selectedFileName As String = System.IO.Path.GetFileName(OFD.FileName)
        If selectedFileName.ToLower = "profit.txt" Then
            Dim line As String
            Using reader As New StreamReader(OFD.OpenFile)
                While Not reader.EndOfStream
                    line = reader.ReadLine
                    Console.WriteLine(line)
                End While
            End Using
        Else
            MessageBox.Show("You cannot use that file!")
        End If
    End If
End Sub

以下是使用Integer.Parse()将line中的字符串转换为数值的简单示例:

    Dim value As Integer
    If Integer.TryParse(line, value) Then
        total = total + value
    End If

显然你必须为文件中的每个“行”执行此操作,因此这应该发生在内部 While循环中。你需要在循环之外声明total变量(以及using语句),并且不要忘记在某处输出该总数。