【问题标题】:lockers array program VISUAL BASIC储物柜阵列程序 VISUAL BASIC
【发布时间】:2015-01-04 03:30:55
【问题描述】:

我必须在 Visual Basic 中编写一个程序,使用布尔数组显示 100 个储物柜的打开或关闭状态。点击按钮Initialize时,所有储物柜的状态应该是opened,但是当点击Simulate时,它会经历一个关闭每N个储物柜的过程(每2个储物柜,然后每3个储物柜,然后每 4 个储物柜,依此类推)。

我让它工作,所以它总是为每个储物柜显示opened,但我不知道如何让它每第 N 个储物柜关闭。

这是我的代码:

Public Class Form1  
    Dim index As Integer  
    Dim doors(100) As Boolean

    Private Sub btnInitialize_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnInitialize.Click

        Dim count As Integer
        lstLockers.Items.Clear()
        lstLockers.Items.Add("Locker" & vbTab & "Status")

        For count = 1 To 100
            doors(count) = True

            If doors(count) = True Then
                lstLockers.Items.Add(count & vbTab & "Opened")
            End If
        Next

    End Sub



    Private Sub btnSimulate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSimulate.Click

        lstLockers.Items.Clear()
        lstLockers.Items.Add("Locker" & vbTab & "Status")

        Dim count As Integer
        Dim eq As Integer

        For count = 1 To 100
            doors(count) = True

            If doors(count) = True Then
                lstLockers.Items.Add(count & vbTab & "Opened")
            ElseIf doors(count) = False Then
                lstLockers.Items.Add(count & vbTab & "Closed")
            End If


        Next



    End Sub
End Class

【问题讨论】:

  • For 语句的一般形式是FOR var = start TO end STEP increment。您应该记得使用 STEP。
  • @HansPassant - 如果是这种情况,我在发布的答案中想多了。 :)
  • 据我了解 PoppinWave 的问题,汉斯的回答是这样的。 (:

标签: vb.net


【解决方案1】:

在您的btnSimulate_Click 方法中,您将doors 索引设置为true,然后立即检查它是否为真。这就是为什么它总是说opened

关于关闭每第 N 个储物柜,您可以使用简单的计数器变量来完成此操作。

' n represents the "Nth" locker to close.
Dim n As Integer = 2
Dim progress As Integer = 0 ' Progress to n.

For count = 1 To 100
    ' This line shouldn't be here. doors has already been initialized.
    'doors(count) = True

    ' Increment progress towards n.
    progress = progress + 1

    ' Check if Nth interval is reached.
    If n = progress Then
        ' It is. Close the locker.
        doors(count) = False
        ' Increment n and reset the progress counter.
        n = n + 1
        progress = 0
    End If

    If doors(count) = True Then
        lstLockers.Items.Add(count & vbTab & "Opened")
    ElseIf doors(count) = False Then
        lstLockers.Items.Add(count & vbTab & "Closed")
    End If

Next

这会关闭储物柜:

  • 2 (n = 2)
  • 5 (n = 3)
  • 9 (n = 4)
  • 14(n = 5)

【讨论】:

    猜你喜欢
    • 2015-06-29
    • 2015-07-13
    • 2013-02-20
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    相关资源
    最近更新 更多