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?
答案 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