2013-12-09 69 views
0

我想從一個程序,我以前作出,將平均在一起10個數字,並捕獲例外,如果信件輸入程序。沒有支票的信件舊代碼爲嘗試...趕上...終於檢查字符串VB.Net

Module Module1 
Sub Main() 
    Dim Input As Decimal 
    Console.WriteLine("Press the numbers you would like to average and press enter after each number.") 
    Console.WriteLine("After the tenth number all the numbers will be averaged together.") 
    Input = Console.ReadLine 
    Console.WriteLine((Input + Console.ReadLine + Console.ReadLine + Console.ReadLine + Console.ReadLine + Console.ReadLine + Console.ReadLine + Console.ReadLine + Console.ReadLine + Console.ReadLine)/10) 
    Console.ReadKey() 
End Sub 
End Module 

新方案目前我有如下,我有各種各樣的問題,所以任何幫助,將不勝感激。

Module Module1 

Public Sub Main() 
    Dim input As Object 

    Console.WriteLine("Press the numbers you would like to average and press enter after each number.") 
    Console.WriteLine("After the tenth number all the numbers will be averaged together.") 
    input = Console.ReadLine 
    If Char.IsNumber(Console.ReadLine) Then 
     Console.WriteLine((Console.ReadLine + Console.ReadLine + Console.ReadLine + Console.ReadLine + Console.ReadLine + Console.ReadLine + Console.ReadLine + Console.ReadLine + Console.ReadLine + Console.ReadLine)/10) 
     Console.ReadKey() 
    End If 
    If Not IsNumeric(Console.ReadLine) Then 
     Try 
     Catch ex As System.Exception 
      System.Console.WriteLine("Please enter a number") 
     Finally 
      System.Console.WriteLine("Try again without entering any letters") 
     End Try 
     Console.ReadKey() 
    End If 



End Sub 

End Module 
+0

你能稍微更清楚一點你所得到的錯誤嗎? –

+1

定義了「各種各樣的問題」......在清潔工人身上有讀寫技巧 – Plutonix

+0

出於某種原因,而不是數字的平均值,它們會以一種奇怪的方式變得越來越多,而且在顯示之前我必須輸入3個不同的字母異常消息。 – user3083405

回答

2

Try/Catch不能這樣工作。該塊將執行Try和Catch之間的任何代碼,並且如果此代碼中發生異常,它將轉到Catch-Code。無論如何,最後的代碼都會被執行。你的方法不是非常簡單。我會建議這樣的:

Sub Main() 
    Console.WriteLine("Please enter ten numbers.") 
    Dim nums As New List(Of Double) 
    Do 
     Dim input As String = Console.ReadLine 
     If IsNumeric(input) Then 
      nums.Add(CDbl(input)) 
      Console.WriteLine("Ok. Please enter " & (10 - nums.Count).ToString & " more numbers.") 
     ElseIf input = "exit" Then 
      Exit Sub 
     Else 
      Console.WriteLine("Please enter only numeric values. Please try again.") 
     End If 
    Loop Until nums.Count >= 10 
    Dim res As Double = 0 
    For i = 0 To nums.Count - 1 
     res += nums(i) 
    Next 
    Console.WriteLine("----------------") 
    Console.WriteLine("Average value: " & (res/nums.Count).ToString) 
    Console.ReadKey() 
End Sub 

這不使用Try/Catch。相反,它會檢查每行輸入的是數字。如果是這樣的話,那麼這個數字就會被添加到一個列表中(雙精度)以便以後計算平均值。如果它不是數字,則會顯示一條消息,您必須重試。這一直持續到輸入10個有效數字。然後計算並顯示平均值。

+0

列表有一個可以使用的平均方法和求和方法,而不是迭代列表來添加它。 – tinstaafl

+0

這是真的。我只是從來沒有想到這些出於某種原因:-) – Jens

+0

@Jens謝謝你的幫助,但對於這個特定的程序,我不得不使用Try ... Catch ....最後以某種方式。你會如何建議我這樣做? – user3083405