我正在尝试猜测数字'在uni中执行任务的游戏,我坚持(我认为)是一个解析问题。
在我运行程序之前它没有显示任何错误,但是当它到达某一点时(点击消息框后它退出并抛出可能的错误和解决方案)。
我确实想尝试自己解决这个问题,但我确实在各处都搜索了这个问题,但它没有给我一个确切的错误,所以我有点卡在搜索的内容上。
我已经包含了下面的代码以及错误屏幕截图的链接。
非常感谢,Rob
屏幕截图链接:screenshot
private void btnGenerate_Click(object sender, EventArgs e)
{
Random gen = new Random();
int randNumber = gen.Next(1, 1000);
lblWelcome.Text = ("");
btnGenerate.Visible = false;
MessageBox.Show("The computer has picked a number and stored it, please continue and guess the number");
txtbxInputNumber.Visible = true;
int guess = int.Parse(txtbxInputNumber.Text);
while (guess != randNumber)
{
if (guess < randNumber)
{
MessageBox.Show("Try higher");
}
else
{
MessageBox.Show("Try lower");
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
答案 0 :(得分:1)
您应该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
}
答案 1 :(得分:1)
在查看屏幕截图时,您的txtbxInputNumber.Text
是空的!那不是有效的Int。
您应该使用int.TryParse()
int guess;
if(int.TryParse(txtbxInputNumber.Text, out guess))
{
// the guess is a valid int!
}
else
{
// the guess is not a valid int!
}
答案 2 :(得分:0)
由于输入字符串为空,解析不会将其识别为数字,您应该添加条件
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参数
答案 3 :(得分:0)
它会抛出异常,因为输入不是数字。使用Int32.TryParse代替 BaseCollectionViewCell *cell;
if (condition) {
ChildCell *cell1 = (ChildCell *)[collectionView
dequeueReusableCellWithReuseIdentifier:kCustomCell1Identifier
forIndexPath:indexPath];
//call cell1's specific properties if needed.
cell = (BaseCollectionViewCell *) cell1;
} else {
ChildCell2 cell2 = (ChildCell2 *)[collectionView
dequeueReusableCellWithReuseIdentifier:kCustomCell2Identifier forIndexPath:indexPath];
//call cell2's specific properties if needed.
cell = (BaseCollectionViewCell *) cell2;
}
//call common methods here.
。
Int32.Parse
答案 4 :(得分:0)
问题是当您尝试进入循环时,txtInputBox值为null。将输入框行放在while循环中,并添加一个非null的检查。应该工作,然后这样:
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");
}
}
}
答案 5 :(得分:0)
而不是&#39; int.Parse&#39;尝试使用&#39; int.TryParse&#39;。
int guess ;
//int guess = int.Parse(txtbxInputNumber.Text); //Instead of this
int.TryParse(txtbxInputNumber.Text, out guess ); //use this