2013-03-05 74 views
0

我有一個簡單的程序來平均十(用戶定義)的數字,然後打印結果。在程序結束時,我想打印Would you like to average a new set of numbers? (Y/N)如果用戶輸入y比我希望程序從頂部再次執行。如果用戶輸入n比程序應該關閉。我試過研究這個,但只找到了讓整個控制檯退出並重新打開的方法,這不是我想要的。VB.NET有整個程序循環,直到用戶決定退出?

+0

如果'ConsoleKey.Key == ConsoleKey.Y'能不能遞歸調用'Main(args)'? – SpaceBison 2013-03-05 22:01:41

+0

你能詳細說明嗎?我只是教自己的VB.NET,所以我不完全熟悉很多技術。 – Matt 2013-03-05 22:04:05

+0

我是一個C#人,所以我提供的任何代碼都不會很熟悉,但是在控制檯應用程序中,通常會有一個'static void Main(string [] args)'這是控制檯應用程序的入口 - 所以當你可以調用任何你打來的電話,詢問用戶輸入,如果他們按下Y鍵,再次調用Main方法重新開始...... – SpaceBison 2013-03-05 22:05:34

回答

1

檢測用戶已經進入你有幾個選擇:

Console.ReadKey() 

將讀取下一個按鍵。然後,您可以使用簡單的Select Case分支來選擇要執行的操作。

您還可以使用:

Console.ReadLine() 

將返回一個字符串(在用戶按下Enter鍵)。然後,您可以使用一個簡單的if語句來決定什麼是字符串(和重複查詢,如果不是「Y」或「N」以外的東西被輸入。)

例子:

Shared Sub Main()  
    While True 
     AverageNums() 
     Console.WriteLine("Do you want to run again? (Y/N)") 
     Dim key = Console.ReadKey() 
     If key.Key = ConsoleKey.N Then 
      Exit While 
     End If 
    End While  
End Sub 

Shared Sub AverageNums() 
    ' ... 
End Sub 
+0

謝謝你的例子!這是非常有教育意義的學習。我沒有意識到,或者我沒有想到你實際上可能有多個'Sub Main()'語句。 – Matt 2013-03-05 22:20:00

+0

@Matt - 它們被稱爲「方法」('Sub')或「函數」('Function')(關鍵字「sub」基於舊的「子程序」概念),你可以聲明和你一樣多的'喜歡在一個類 - 唯一的警告是,每個人都必須有一個不同的名稱(直到你瞭解重載)。快樂學習。 – JDB 2013-03-05 22:23:39

0

我的反應可能在遊戲中稍晚,但我認爲我會分享一個實現try-catch方法的緊湊版本。

Sub Main() 
    Do 
     Try 
      Console.Write("Enter a value: ") 
      Console.ReadLine() 
      '... 

      SomeProcedure() 

     Catch ex As Exception 
      Console.WriteLine(ex.ToString) 
     Finally 
      Console.Write("Enter another value? (N for No) ") 
     End Try 

    Loop Until Console.ReadLine() = "N" 

End Sub 

Sub SomeProcedure() 
    '... 
End Sub