【问题标题】:Showing a specific result within a loop在循环中显示特定结果
【发布时间】:2015-06-02 20:37:17
【问题描述】:

我正在尝试创建一个能够使用 RSA 加密系统进行编码的程序。为此,我创建了能够使用Euclidean Algorithm 进行计算的代码。代码如下:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    number1 = TextBox1.Text
    number2 = TextBox2.Text
    Do While answer <> 0
        answer = number1 Mod number2
        number2 = number1 And answer = number2
    Loop
    MessageBox.Show(answer)
End Sub

所以,这并不难,对吧?问题是它总是显示 0 作为答案,这是有道理的。但我想在最后一个之前得到循环的答案。

这是一个[示例]

如果你不明白我想说什么。

我希望有人能够帮助我:)

【问题讨论】:

    标签: vb.net visual-studio-2010 vba loops


    【解决方案1】:
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As                                                            System.EventArgs) Handles Button2.Click
            dim prevAnswer as integer
            number1 = TextBox1.Text
            number2 = TextBox2.Text
            Do While answer <> 0
                prevAnswer = answer
                answer = number1 Mod number2
                number2 = number1 And answer = number2
            Loop
        MessageBox.Show(prevAnswer)
        End Sub
    

    【讨论】:

    • 我已经尝试实现这一点,但不幸的是它仍然给了我 0 作为答案,也许它与 prevAnswer = answer 在它的位置不完全正确有关?
    • 当条件是答案不能为 0 时,不确定 prevAnswer 为 0。你调试了吗?
    • 我也不明白,我确实调试过,消息框给了我一个0作为答案。
    【解决方案2】:

    为什么不声明一个变量来保存答案并在设置它之前检查它是否为0?

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As                                                            System.EventArgs) Handles Button2.Click
    Dim number1
    Dim number2
    Dim answer
    Dim whatIWant
        answer = -1
        number1 = TextBox1.Text
        number2 = TextBox2.Text
    Do While answer <> 0    
        answer = number1 Mod number2
        number1 = number2
        number2 = answer        
        If answer <> 0 Then
            whatIWant = answer
        End If
    Loop
    MessageBox.Show (CStr(whatIWant))
    
    End Sub
    

    这是您可以在 Excel 中进行的一个简单测试,完成后消息框显示 99。

    Sub TestIt()
    Dim number1
    Dim number2
    Dim answer
    Dim whatIWant
        answer = -1
        number1 = 148104 'TextBox1.Text
        number2 = 47223 'TextBox2.Text
    Do While answer <> 0
        answer = number1 Mod number2
        number1 = number2
        number2 = answer
    
        If answer <> 0 Then
            whatIWant = answer
        End If
    Loop
    MsgBox (CStr(whatIWant))
    
    End Sub
    

    【讨论】:

    • 我试过这个,不幸的是它没有用。我使用了“将 whatIWant 设为整数”。但它仍然显示 0 作为答案。
    • @KevinSebastian 你的逻辑是错误的。我已更新我的答案以更正此问题。
    • 哦,对不起,我一定是把你的答案解释错了,好吧,我对 VB.net 的经验并不丰富。我已经尝试了你的新代码,但它仍然显示 0。除此之外,我不太明白为什么当我没有看到 prevAnswer 再次出现时,为什么有一个 Dim prevAnswer as Integer,我错过了什么吗?
    • @KevinSebastian prevAnswer 是因为我复制了定义并且没有在我的示例中删除它,它已被删除。尝试运行 excel 示例。我的猜测是你没有给答案一个初始值,所以它默认为 0
    猜你喜欢
    • 2014-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 2020-06-09
    • 2014-07-13
    • 1970-01-01
    相关资源
    最近更新 更多