从Visual Basic中的文本文件读取

这是2018年代码出现第1天的第一个挑战 (链接: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

这里是数字列表的链接:https://adventofcode.com/2018/day/1/input

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

到目前为止,我已经给出了答案549,但Advent of Code Webiste拒绝了它。有什么想法吗?

sibo3615 回答:从Visual Basic中的文本文件读取

通过使用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(“您的字符串”) 不会影响性能。

本文链接:https://www.f2er.com/3006575.html

大家都在问