2013-03-05 78 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