【问题标题】:I am unsure about how to count how many times certain conditions are met我不确定如何计算满足某些条件的次数
【发布时间】:2017-10-04 09:45:10
【问题描述】:

我正在 Visual Studio 中构建一个“猜词”游戏的程序。

发生的情况是,我的数组生成了一个 Word,并出现了一个输入框。用户必须通过在输入框中输入文本来猜测该单词,如果正确,则会显示一个消息框,如果不正确,则会出现一个消息框,提示重试。

我需要一个函数来计算用户猜对了多少单词。我有这个,但如果这个词等于用户输入,1 将出现在我设置它出现的标签中,如果它不等于它,则会出现 0。当我计算某个按钮被点击的次数时,这段代码有效(使用不同的变量等),所以我很困惑为什么它现在不起作用。

Dim guess As String
guess = (LCase(InputBox("What is the word", "Guess the word")))      
Static hits As Integer
hits = 0
If word = guess Then hits += 1
Label8.Text = hits

word 是我的数组生成的单词。

为什么上面的代码没有增加正确猜测的次数?

【问题讨论】:

  • hits = 0 似乎每次都在您显示输入框后运行。所以它在每次猜测时重置为 0。只需声明该变量并在用户开始游戏时将其设置为 0 一次,并仅在他们开始新游戏时将其重置为 0。
  • 您可能在某个按钮/元素事件子中运行它,并且每次都重置 hits 变量。所以它应该在子外部声明为全局。

标签: vb.net visual-studio counting


【解决方案1】:

出错是因为你有

Static hits As Integer
hits = 0

这意味着每次执行hits = 0行时hits被设置为0。

如果你使用

Static hits As Integer = 0

然后它会将其初始化为 0,并且只会执行一次。

【讨论】:

  • 这是原始问题的准确答案,也是您答案的扩展......但是,让我们再给 OP 一个!
【解决方案2】:

按照其他人的建议,在声明点初始化 hits 变量并去掉赋值行:

Static hits As Integer = 0 ' Modify the declaration like this line
' hits = 0 - remove this line

另一种解决方案是在module level 处声明hits 变量,在这种情况下不需要Static 关键字:

Private hits As Integer = 0

然后在代码中您喜欢的任何位置访问它,并确保在调用您的方法之间保留它的值。 无论如何,您需要确保这条线已经消失:

hits = 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 2019-12-04
    • 2020-12-06
    • 2020-10-10
    相关资源
    最近更新 更多