2015-06-02 3 views
1

Я пытаюсь создать программу, которая может кодировать с использованием системы шифрования 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 как ответ, что имеет смысл. Но я хочу получить ответ цикла перед последним.

Вот [пример]

enter image description here

, если вы не понимаете, что я пытаюсь сказать.

Я надеюсь, что кто-то может помочь мне :)

ответ

1

Почему бы не объявить переменную для ответа и проверить, если это 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 
+0

Я попытался это, к сожалению, это не сработало. Я использовал «Dim whatIWant As Integer». Но он все еще показывает 0 как ответ. – KevinSebastian

+0

@KevinSebastian ваша логика выключена. Я обновил свой ответ, чтобы исправить проблему. – Sorceri

+0

О, извините, я, должно быть, неправильно истолковал ваш ответ, ну, я не так разбираюсь в VB.net в любом случае. Я пробовал ваш новый код, но он все еще показывает 0. Кроме того, я не совсем понимаю, почему существует Dim prevAnswer как Integer, когда я не вижу, чтобы prevAnswer снова появлялся, есть ли что-то, что я там отсутствует? – KevinSebastian

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

. Я попытался реализовать это, но, к сожалению, он все равно дал мне 0 в качестве ответа, возможно, он имеет отношение к строке prevAnswer = answer не полностью правильно на месте? – KevinSebastian

+0

Не знаете, как prevAnswer равно 0, когда условие таково, что ответ не может быть 0. Вы отлаживали? – Maxqueue

+0

Я тоже этого не понимаю, я действительно отлаживал, и ящик сообщений дал мне 0 в качестве ответа. – KevinSebastian