在 Visual Basic 中读取文本文件

Reading from text files in Visual Basic

这是 2018 年 Advent of Code 第 1 天的第一个挑战 (link: https://adventofcode.com/2018/day/1)

所以我正在尝试创建一个程序来读取一长串正数和负数(例如 +1、-2、+3 等),然后将它们相加以创建总数。我研究了一些在 Visual Basic 中处理文件的方法,并提出了以下方法:

    Sub Main()
        Dim objStreamReader As StreamReader
        Dim strLine As String = ""
        Dim total As Double = 0
        objStreamReader = New StreamReader(AppDomain.CurrentDomain.BaseDirectory & "frequencies.txt")
        strLine = objStreamReader.ReadLine
        Do While Not strLine Is Nothing
            Console.WriteLine(strLine)
            strLine = objStreamReader.ReadLine
            total += strLine
        Loop
        Console.WriteLine(total)
        objStreamReader.Close()
        Console.ReadLine()
    End Sub

这里是 link 到号码列表:https://adventofcode.com/2018/day/1/input

我遇到的不是语法错误,而是逻辑错误。答案不知何故是错误的,但我似乎无法弄清楚在哪里!我试图从每个数字中删除符号,但是在编译时会抛出一个 NullException 错误。

到目前为止,我得出了答案549,代码降临网站拒绝了。有什么想法吗?

使用 File.ReadLines(fileName) 而不是处理 StreamReader 让您的生活更轻松。使用 Path.Combine 而不是字符串连接来创建路径。 Path.Combine 负责添加缺失的 \ 或删除多余的

您的文件末尾可能包含一个额外的空行,它不会转换为数字。在求和之前使用 Double.TryParse 确保您有一个有效的数字。无论如何,您应该 Option Strict On 强制执行显式转换。

Dim fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "frequencies.txt")
Dim total As Double = 0
For Each strLine As String In File.ReadLines(fileName)
    Console.WriteLine(strLine)
    Dim n As Double
    If Double.TryParse(strLine, n) Then
        total += n
    End If
Next
Console.WriteLine(total)
Console.ReadLine()

要附加两个字符串,请使用字符串生成器。 将测试作为新的 stringbuilder() Test.append("your string") 不会影响性能。