困惑?如何在两个数字之间找到偶数? VB.NET

时间:2012-06-05 14:58:22

标签: vb.net events module numbers

如何找到6到16之间的偶数。

事情是我正在处理事件。我该怎么做?我做了很多研究,发现了一些可行的代码,但我不确定它是如何工作的。 (我绝对不会使用vb.net - 我只是想完成这门课程。)

我找到的是我必须使用MOD吗?我甚至不确定如何在活动中使用它?任何代码都非常棒,让我完成这项任务。

我从一个必须找到偶数数字的程序中取出这个代码并且效果很好,但唯一的缺点是它从1开始,然后是你希望它停止的任何数字。我只需要6到16 ..

Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Diagnostics

Module Module1
    Private Delegate Sub numManip()

    Sub Main()
        Dim evennumber As numManip
        Dim allNumbers As [Delegate]
        evennumber = New numManip(AddressOf Even)
        allNumbers = [Delegate].Combine(evennumber)
        allNumbers.DynamicInvoke()
    End Sub

    Sub Even()
        Console.Clear()
        Dim counter As Integer = 2
        Console.WriteLine("Even Numbers")
        Console.WriteLine("Please Enter the Number you Wish to End at: ")
        Dim number As Integer = Console.ReadLine()
        Console.Clear()
        Console.WriteLine("All Even Numbers From 6 to " & number)
        Do Until counter > number
            Console.WriteLine(counter)
            counter += 2
        Loop
        Console.WriteLine("Press Enter to Continue...")
        Console.ReadLine()
    End Sub

    Public Enum Numbers
        Unset
        Prime
        Composite
    End Enum
End Module

3 个答案:

答案 0 :(得分:1)

如果没有潜入作业的其他部分,请使用“Mod 2”

检查偶数
If (myNum Mod 2) = 0 Then
 'It's even!
Else 
 'It's not!
End If

对于Events的部分内容:我不想给你剪切和粘贴的代码,但考虑一下这个想法:你的主要子迭代数字6..16。在每个号码上,您都会引发自定义事件。在事件内部,如果是偶数,则输出到控制台。

  Class NumEventArgs
      Inherits EventArgs
      Public Property Num() As String

      Public Sub New(num As Integer)
         Me.Num = num
      End Sub
   End Class
   Public Event NumCheckEvent(sender As Object, e As NumEventArgs)
   Sub Main()
      AddHandler NumCheckEvent, AddressOf NumCheckEventHandler
      For i = 6 To 16 Step 2
         RaiseEvent NumCheckEvent(Nothing, New NumEventArgs(i))
      Next
   End Sub
   Sub NumCheckEventHandler(sender As Object, e As NumEventArgs)
      If e.Num Mod 2 = 0 Then
         Console.WriteLine("Even!")
      End If
   End Sub

答案 1 :(得分:1)

这段代码对你很有用..你只需稍微改变一下逻辑。此代码从2开始,因为计数器为2.当然,您可以使用与输入最后一个数字相同的逻辑将该数字改为以您想要的任何一个开始(如果您可以输入最后一个,您当然可以输入第一个; ))。

你需要改变的另一件事是使用mod operator来获得除法的剩余部分,因为当你从一个加号开始时,你会遇到问题,你总是假设你的第一个号码是甚至...

无论如何..如果你想从6开始,只需改变这一行

Dim counter As Integer = 2

Dim counter As Integer = 6

如果你总想在16点完成,只需改变这个

Console.WriteLine("Even Numbers")
Console.WriteLine("Please Enter the Number you Wish to End at: ")
Dim number As Integer = Console.ReadLine()
Console.Clear()

到此:

Dim number As Integer = 16

答案 2 :(得分:1)

为什么你说你正在使用活动?首先,您展示的代码都不使用事件,但即使您计算数字的代码在事件处理程序中,也不会改变任何内容。但是,如果您的代码需要在每次找到偶数时引发事件,或者在事件完成时引发事件,那么这会改变一些事情。

您在Main方法中所做的一切都毫无意义。所有它完成的是调用Even方法,你可以非常简单地这样做:

Sub Main()
    Even()
End Sub

即使您出于某种原因需要使用代理,但似乎没有任何理由,您需要做的就是这样:

Sub Main()
    Dim evenDelegate As numManip = New numManip(AddressOf Even)
    evenDelegate.Invoke()
End Sub

Even方法中,我会使用For循环,而不是Do循环。如果找到第一个偶数,则可以逐步输出2,例如

For i As Integer = evenStartingNumber To endingNumber Step 2
Next

否则,你需要遍历每个数字(踩1),然后测试每个数字,看它是偶数还是奇数。如:

For i As Integer = startingNumber To endingNumber
   If IsEven(i) Then
   End If
Next

要确定一个数字是偶数还是奇数,那就是Mod运算符进来的地方。Mod返回除法运算的余数(左边的分数)。因此,例如,10除以4是2,余数为2.当你将任何偶数除以2时,余数总是为零,所以如果x Mod 2 = 0,则x是偶数。