在vb.net中运行时错误,想要避免列表中的数字

时间:2011-04-21 19:43:20

标签: vb.net

Imports System

Public Class Test
   Public Shared Sub Main() 
       Dim n As Integer
       n = Console.ReadLine
       Do While n <> 42
           System.Console.WriteLine(n)
           n = Console.ReadLine
       Loop
   End Sub
End Class

我收到此代码的运行时错误。我怎样才能改变它。以及如何限制循环打印数字从1到42而不是列表中的5?

2 个答案:

答案 0 :(得分:0)

我认为运行时崩溃的最简单方法是将'n'视为String而不是Integer。

    Dim s As String
    s = Console.ReadLine
    Do While s <> "42"
        System.Console.WriteLine(s)
        s = Console.ReadLine
    Loop

当输入的值无法与原始代码转换为Integer时,将发生运行时错误。相反,你可以使用其他东西,比如TryParse()来处理转换失败的情况。

    Dim n As Integer
    Integer.TryParse(Console.ReadLine, n)
    Do While n <> 42
        System.Console.WriteLine(n)
        Integer.TryParse(Console.ReadLine, n)
    Loop

上面的代码可以正常工作,但任何无法转换为整数的输入值仍会写入控制台。 IE如果输入'A',它将输出'0'。如果您只想打印数字且不等于42的输入数字,则需要更改上述内容。 TryParse()确实返回一个布尔值,指示解析是否成功。

我希望有所帮助,我不完全理解你在问题中对'5'的意思。你能说清楚吗?

答案 1 :(得分:0)

您可以在将输入写入控制台并拒绝其他输入之前验证输入是否为整数。

  Dim n As Integer
  Dim input As String
  Do While n <> 42
    input = Console.ReadLine
    If Not String.IsNullOrEmpty(input) AndAlso IsNumeric(input) Then
      n = CInt(input)
      System.Console.WriteLine(n)
    Else
      System.Console.WriteLine("Invalid input.")
    End If
  Loop