我最近开始使用c#进行编码,但是我遇到了一个问题,我现在已经尝试解决了几个小时,所以我想我会放手一搏。这基本上是一个简单的程序,用户可以猜测1-20之间的数字,计算机会告诉你数字是太小还是太大或者数字是否正确。
除了try和catch部分之外,一切正常。我希望用户每次输入字符串而不是数字时都会收到错误消息。我尝试了不同的解决方案,但我无法解决我必须放入try块的问题。正如我所说,当我不使用try和catch时,程序运行正常,但是当我使用它时,每次都会出现错误消息,所以请帮助我并告诉我在试用部分中我要写的内容码。
这是代码:
using System;
namespace Uppgift_4
{
class Program
{
static void Main(string[] args)
{
Random slumpat = new Random();
int speltal = slumpat.Next(1,20);
bool spela = true;
while (spela)
{
Console.Write("\n\tGissa på ett tal mellan 1 och 20: ");
int tal;
Int32.TryParse(Console.ReadLine(), out tal);
try
{
}
catch
{
Console.WriteLine("Fel, du får bara skriva in nummer");
}
if (tal < speltal)
{
Console.WriteLine("\tDet inmatade talet " + tal + " är för litet, försök igen.");
}
else if (tal > speltal)
{
Console.WriteLine("\tDet inmatade talet " + tal + " är för stort, försök igen.");
}
else
{
Console.WriteLine("\tGrattis, du gissade rätt!");
spela = false;
}
}
}
}
}
答案 0 :(得分:2)
当你使用Int32.TryParse
时,如果给定的字符串不能被解析为整数,则不会抛出任何异常。此方法将返回false
。你应该检查一下:
Console.Write("\n\tGissa på ett tal mellan 1 och 20: ");
int tal;
if(!Int32.TryParse(Console.ReadLine(), out tal))
{
Console.WriteLine("Fel, du får bara skriva in nummer");
continue;
}
当您使用Int32.Parse
时,如果无法解析字符串,则会抛出异常:
Console.Write("\n\tGissa på ett tal mellan 1 och 20: ");
int tal;
try
{
tal = Int32.Parse(Console.ReadLine());
}
catch
{
Console.WriteLine("Fel, du får bara skriva in nummer");
continue;
}