在 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")
不会影响性能。
这是 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") 不会影响性能。