-1

如何找到从 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
4

3 回答 3

1

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

您必须更改的另一件事是使用mod 运算符来获取除法的其余部分,因为当您从加号开始时,您会遇到问题是您总是假设您的第一个数字是偶数...

无论如何..如果您想从 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
于 2012-06-05T15:15:34.160 回答
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 是偶数。

于 2012-06-05T15:17:34.103 回答
1

无需深入研究作业的其他部分,您可以使用“Mod 2”检查偶数

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

对于它的事件部分:我不想给你代码来剪切和粘贴,但考虑这个想法:你的主要子迭代数字 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
于 2012-06-05T15:11:57.853 回答