所以我应该从daily_time_chunks = [ ['8:30','9:00'],
['9:00','9:30'],
['9:30','10:00'],
['10:00','10:30'],
['10:30','11:00'],
['11:00','11:30'],
['11:30','12:00'],
['1:00','1:30'] ]
循环获得前一次迭代的答案,并在一个带有多行的标签中显示,但我无法使用显示最新答案的标签。
我的代码如下:
For Next
答案 0 :(得分:0)
一个选项就是,
lblAnswers.Text &= ("Your Grade is: " & intScore & vbNewLine)
这将在循环的每次传递中为文本追加一个新行,保留包含先前迭代的答案的行。
另一种方法是将结果存储到List (Of Integer)
或数组中,然后在计算循环之外构建结果字符串。
另一种方法是在循环中构建一个结果字符串,并在完成后仅分配给lblAnswers.Text。
我不记得,如果标签支持多行这样的文字。您可能会发现需要使用文本控件。
答案 1 :(得分:0)
如果你想保留循环中任何内容的先前值,那么更简单的方法之一就是保留一个可以添加的列表,然后再引用。通过这种方式,您可以获得之前或之前两次的索引的引用,等等。
Dim scores = New List(Of Integer)
For i = 0 To 4
Dim previousScore = 0
Dim score = (i + 1) * 100
scores.Add(score)
If ((i - 1) >= 0) Then
previousScore = scores(i - 1)
End If
Console.WriteLine($"Current Score {score} Previous Score{previousScore}")
Next
在这个例子中,我只是在循环外创建一个分数列表,以便以后可以引用它。然后我迭代一个分数(我只是将迭代加上一百次。然后我添加到我的分数列表中。然后我检查它是否超出第一次迭代,如果是这样的话就抓住前一次迭代。
答案 2 :(得分:0)
使用List(Of Integer)
跟踪您的输入。您可以从列表中轻松提取总和,平均值,计数,最小值,最大值等。
每次在顶部添加新行时,都会附加标签的内容。
Private scores As New List(Of Integer)
Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
' clear scores here or not, depends on whether you want a new list each time
' scores.Clear()
' clear label here or not
' lblAnswers.Text = ""
For i = 1 To 5
Dim score = Integer.Parse(InputBox("Enter your grade to continue:", "What's your Grade?"))
If score < 1 Or score > 100 Then
MessageBox.Show("Please Enter a number between 1 and 100")
Else
scores.Add(score)
lblAnswers.Text =
String.Format("Your grade is: {0}, the sum is {1}, the average is {2}",
score, scores.Sum(), scores.Average()) _
& Environment.NewLine & lblAnswers.Text
End If
Next
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
lblAnswers.Text = ""
End Sub
您可能希望为输入添加一些验证,因为允许非数字输入,但会导致异常。