我作業上的快速問題。我必須將此代碼的一個版本設為“執行直到回圈”。關于“請輸入一個正數”的第一部分有效,但計算總和的第二部分無效。
Sub Main()
Dim sumOdd, oddinput As Integer
Dim odd = 1
Console.Write("Please Enter a Positive Odd Number!: ")
oddinput = CInt(Console.ReadLine())
Do Until oddinput < 0 Or oddinput Mod 2 = 0
Console.Write("Please Enter a Positive Odd Number!: ")
oddinput = CInt(Console.ReadLine())
Loop
'下面的直到回圈給了我這個問題
Do Until odd <= oddinput
sumOdd = odd
odd = 2
Loop
Console.WriteLine("The Sum of all the odd numbers up to {0} is {1}!", oddinput, sumOdd)
Console.ReadLine()
End Sub
終端模塊
uj5u.com熱心網友回復:
嘗試:
Do Until odd > oddinput
以前,對于odd = 1和 條件odd <= oddinput,對于任何oddinput大于1,回圈將剛剛退出。
uj5u.com熱心網友回復:
第一部分實際上并沒有按照您的意愿行事。
oddinput < 0
將接受任何小于零的數字
oddinput Mod 2 = 0
將接受任何偶數,而不是奇數。
但是你想要的是要求用戶輸入一個數字,直到它是正數和奇數:
Do Until oddinput > 0 And oddinput Mod 2 = 1
Console.Write("Please Enter a Positive Odd Number!: ")
oddinput = CInt(Console.ReadLine())
Loop
對于第二部分,您希望它添加奇數,直到奇數大于奇數輸入,然后停止。
Do Until odd > oddinput
sumOdd = odd
odd = 2
Loop
在您的上一個作業中,您必須使用 While 回圈,因此您可以說:while 奇數小于或等于最終數字。在這里你基本上做相反的事情:做直到奇數大于最終數字。也不要使用 >= ,因為當奇數與最終數字相同時回圈會停止,但您仍然希望添加這個數字。
uj5u.com熱心網友回復:
您應該在開始時初始化 sumOdd。
sumOdd=0
奇數應該從 2 而不是 1 開始
Dim odd = 2
也替換這一行:
Do Until odd > oddinput
那可行。之后,您需要驗證驗證,因為它正在驗證例如 -2。
uj5u.com熱心網友回復:
我們將使用 aList(Of T)因為我們不知道用戶想要輸入多少個數字。TheT代表Type,我們想要 type Integer。
用戶可以輸入“end”或“eNd”它仍然可以作業,因為我們呼叫ToUpper了UserInput。
我將驗證代碼移到了單獨的位置,Function這樣就不會弄亂Sub Main. 在ValidateInput我使用嵌套If陳述句的方法中,我可以為每個錯誤顯示不同的訊息。If 陳述句的順序很重要,因為我們無法比較inputto0或使用Mod運算子,直到我們有了Integer, i。只有當input所有三個測驗都通過時,我們才回傳 true。所有其他路徑都回傳 false。
只有在ValidateInput回傳時True,我們才將 加入UserInput串列。
我用 aStringBuilder制作了一個輸入所有奇數的字串。的StringBuilder,如果有進入超過10個號碼,并不會真正傷害,否則有幫助。Strings 是不可變的(無法更改),因此每次更改字串時,編譯器都必須丟棄舊字串并創建一個全新的字串。在StringBuilder避免了這一點。
我使用內插字串來顯示結果。在$之前的字串意味著它是一個內插字串。它比舊的更容易處理,String.Format()因為您可以直接在大括號包圍的字串中插入變數{ }。沒有必要呼叫ToString非字串變數。那會自動發生。
我確實呼叫ToString了StringBuilder因為我需要Trim去掉最后的逗號和空格。
Sub Main(args As String())
Dim lst As New List(Of Integer)
Console.WriteLine("To end type End")
Do
Console.Write("Please Enter a Positive Odd Number!: ")
Dim UserInput = Console.ReadLine
If UserInput.ToUpper = "END" Then
Exit Do
End If
If ValidateInput(UserInput) Then
lst.Add(CInt(UserInput)) 'You can use CInt with confidence because you have already validated
End If
Loop
Dim sb As New StringBuilder
For Each item In lst
sb.Append(item.ToString & ", ")
Next
Console.WriteLine($"These are the numbers you entered {sb.ToString.Trim({" "c, ","c})}")
Console.WriteLine($"You have entered {lst.Count} odd numbers. The sum is {lst.Sum}")
Console.ReadKey()
End Sub
Private Function ValidateInput(input As String) As Boolean
Dim i As Integer
If Integer.TryParse(input, i) Then 'First check if it is an Integer
If i > 0 Then 'Next check if it is positive
If i Mod 2 <> 0 Then 'Finally check if it is odd
Return True
Else
Console.WriteLine("Please enter an odd number.")
Return False
End If
Else
Console.WriteLine("Please enter a positive number.")
Return False
End If
Else
Console.WriteLine("Please enter a valid number")
Return False
End If
End Function
我希望你喜歡你的課程。如果此代碼中的某些內容超出了您所學的內容,那么您的老師應該可以接受,只要您了解它在做什么并且可以解釋它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/327054.html
上一篇:作業表中的For回圈更改故障
