我想计算每行:就像第一行123 * 1.616和第二行213 * 1.616,并显示每个总计。 公斤文本框中输入的每个数字将多为1.616,然后在kati标签中显示结果。 这是我的代码:
Private Sub b1_Click(sender As Object, e As EventArgs) Handles b1.Enter
For Each digit In (TextBox1.Text)
total1 = Val(digit) * 1.616
Label9.Text = total1
Next
Label9.Text = total1
End sub
请帮助我找到一些解决方案或解释,以实现输出。
答案 0 :(得分:0)
这应该有效
Private FACTOR As Decimal = 1.616
Private SEPARATOR As String = Environment.NewLine
Private Sub b1_Click(sender As Object, e As EventArgs) Handles b1.Click
Label9.Text = TextBox1.Text.
Split({SEPARATOR}, StringSplitOptions.RemoveEmptyEntries).
Select(Function(s1) $"{Decimal.Parse(s1) * FACTOR:0.00#}").
Aggregate(Function(s1, s2) $"{s1}{SEPARATOR}{s2}")
End Sub
这是LINQ中的功能
Split
使用SEPARATOR作为分隔符,从TextBox的每一行中组成一个数组Select
将元素转换为它们的值乘以FACTOR Aggregate
将元素放回到由SEPERATOR分隔的字符串中您的原始代码为什么不起作用?
Option Strict On
可以避免这种情况)。 Label9.Text = Val(digit) * 1.616
,每次都会覆盖Label。答案 1 :(得分:-1)
您可以通过vbCrLf使用分割字符串
Sub main()
Dim multilinetext As String =
"10
20
30
40
50
60"
Dim number_array = multilinetext.Split(vbCrLf)
Dim output As Integer = 0
For Each i In number_array
output += i
Next
Stop
End Sub