C#在尝试生成随机数生成器时遇到解析错误
我正试图在大学里为一项任务做一个“猜数字”游戏,我被困在(我认为)一个解析问题上 在我运行程序之前,它不会显示任何错误,但当它到达某个点时(单击消息框后,它退出并抛出可能的错误和解决方案) 我确实想自己尝试解决这个问题,我在任何地方都搜索了这个问题,但它没有给我一个确切的错误,所以我有点困在搜索什么上 我已经包括了下面的代码和错误截图的链接 非常感谢,罗布 屏幕截图链接:C#在尝试生成随机数生成器时遇到解析错误,c#,C#,我正试图在大学里为一项任务做一个“猜数字”游戏,我被困在(我认为)一个解析问题上 在我运行程序之前,它不会显示任何错误,但当它到达某个点时(单击消息框后,它退出并抛出可能的错误和解决方案) 我确实想自己尝试解决这个问题,我在任何地方都搜索了这个问题,但它没有给我一个确切的错误,所以我有点困在搜索什么上 我已经包括了下面的代码和错误截图的链接 非常感谢,罗布 屏幕截图链接: private void btnGenerate\u单击(对象发送方,事件参数e) { Random gen=新的Rando
private void btnGenerate\u单击(对象发送方,事件参数e)
{
Random gen=新的Random();
int randname=gen.Next(11000);
lblWelcome.Text=(“”);
btnGenerate.Visible=false;
MessageBox.Show(“计算机已拾取并存储了一个数字,请继续并猜测该数字”);
txtbxInputNumber.Visible=true;
int guess=int.Parse(txtbxInputNumber.Text);
while(猜测!=randNumber)
{
如果(猜测<随机数)
{
MessageBox.Show(“尝试更高”);
}
其他的
{
MessageBox.Show(“尝试降低”);
}
}
}
私有void Form1\u加载(对象发送方、事件参数e)
{
}
你应该TryParse
你从用户那里输入的信息,但这不一定是有效的数字
int guess = 0;
int.TryParse(txtbxInputNumber.Text, out guess);
如果你愿意,你可以显示一个错误,这样他就知道他犯了错误
int guess = 0;
if(!int.TryParse(txtbxInputNumber.Text, out guess))
{
//show error message
return; // quit the method
}
当我看到屏幕截图时,您的
txtbxInputNumber.Text
为空!这不是一个有效的整数
您应该使用,int.TryParse()
由于输入字符串为空,解析无法将其识别为数字,因此应添加一个条件
int guess = int.Parse(txtbxInputNumber.Text == "" ? "0" : txtbxInputNumber.Text);
这与使用if相同,不过if语句有一个额外的优点,即您可以返回错误
if(txtbxInputNumber.Text == "")
{
MessageBox.Show("Try higher");
return;
}
else
{
int guess = int.Parse(txtbxInputNumber.Text);
}
您还可以将输入限制为数字,以便它将自动包含一个数字
另一个选项是使用TryParse,在这种情况下,必须首先实例化guess,因为它需要作为out参数它会引发异常,因为输入不是数字。使用而不是
Int32.Parse
int guess;
if (!Int32.TryParse(txtbxInputNumber.Text, out guess))
MessageBox.Show("Enter a number");
问题是,当您尝试进入循环时,txtInputBox值为null。将inputbox行放在while循环内,并添加一个NOTNULL检查。应该是这样的:
int guess = 0;
while (guess != randNumber)
{
if !string.IsNullOrEmpty(txtbxInputNumber.Text)
{
guess = int.Parse(txtbxInputNumber.Text);
if (guess < randNumber)
{
MessageBox.Show("Try higher");
}
else
{
MessageBox.Show("Try lower");
}
}
}
int guess=0;
while(猜测!=randNumber)
{
if!string.IsNullOrEmpty(txtbxInputNumber.Text)
{
guess=int.Parse(txtbxInputNumber.Text);
如果(猜测<随机数)
{
MessageBox.Show(“尝试更高”);
}
其他的
{
MessageBox.Show(“尝试降低”);
}
}
}
.尝试使用“int.TryParse”代替“int.Parse”
int guess ;
//int guess = int.Parse(txtbxInputNumber.Text); //Instead of this
int.TryParse(txtbxInputNumber.Text, out guess ); //use this
当您获得异常时,您试图解析的值是
“”
,或空字符串。这确实不是一个正确的整数格式。您的代码在thw while循环中被卡住,因为您从未更新guess
请注意使用TryParse来很好地处理此问题。使用TryParse是否像我在回答中建议的那样帮助了您?如果txtbxInputNumber.Text
包含a
?这就是数字限制发挥作用的地方,还有锥虫的暗示
int guess ;
//int guess = int.Parse(txtbxInputNumber.Text); //Instead of this
int.TryParse(txtbxInputNumber.Text, out guess ); //use this