2012-06-05 47 views
-1

如何找到從6到16的偶數。困惑?如何在兩個數字之間找到偶數? VB.NET

事情是我正在處理事件。我應該怎麼做?我做了大量的研究,發現了一些可能有效的代碼,但我不確定它是如何工作的。 (我絕不是用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 

回答

1

沒有跳水到分配的其他部分,您可以使用「國防部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 
+0

我很感謝您給我的所有幫助,並讓您的時間充滿您的一天! – CodeHelp

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 
+0

謝謝你,這真是太棒了!我感謝您抽出寶貴的時間來幫助我! – CodeHelp

+0

我有一個關於事件部分的問題,你認爲我可以把這個信息像點擊按鈕嗎?因爲一個事件是一個按鈕點擊右鍵? – CodeHelp

+0

是的,當然你可以..只是嘗試它,讓我們知道.. – gbianchi

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是偶數。

+0

夥計們,我在一個不同的項目上使用委託,我剛剛使用它,因爲我認爲它會工作所有這些幫助非常感謝幫助傢伙 – CodeHelp

相關問題