我对C#和unity还比较陌生,我一直在做一个数字猜谜游戏来学习。当我测试它的时候,我在它中断的输入字段中输入了一个null值。
- 需要注意的是字符串和浮点数据类型无法输入。感谢任何帮助:)*
我试过在上面做一个嵌套的if语句,它检查值是否为null,如果是,它会告诉用户再试一次,但是没有用。
//random number variable
public int randomNum;
//for answers really big or really small
private int randomNumSmall;
private int randomNumBig;
//user input
public InputField userInput;
void Start()
{
//the math or the small and big numbers
randomNumSmall = randomNum - 10;
randomNumBig = randomNum + 10;
}
void Update()
{
}
public void OnButtonClick() //button click is what happens when the button is clicked
{
//the user input being but into a string variable for storage
string userInputValue = userInput.text;
//converting the string to an int
int answer = int.Parse(userInputValue);
//first if statetment that supposed to check if its null or not
if (userInputValue != "")
{
//logic for all possible responces with numbers
if (answer < randomNum)
{
if (answer < randomNumSmall)
{
Debug.Log("Way too Low!");
}
else
{
Debug.Log("Too low!");
}
}
else if (answer > randomNum)
{
if (answer > randomNumBig)
{
Debug.Log("Way too high!");
}
else
{
Debug.Log("Too high!");
}
}
else
{
Debug.Log("You are correct!");
}
}
//this else statement is supposed to redirect the user when inputting nothing
else
{
Debug.Log("Please write down a number");
}
}
2条答案
按热度按时间cczfrluj1#
就像@Verpous评论的那样,请在提问时提供错误信息。如果没有错误信息,帮助你会很麻烦。
从你的代码来看,我猜当你试图将字符串转换为int
int answer = int.Parse(userInputValue);
时,它会失败。如果你没有在输入字段中输入任何内容,文本将为空,Parse
方法将抛出异常。相反,建议使用TryParse
方法,该方法将返回指示解析是否成功的布尔值。转换后的int将通过out
参数返回给您。供参考:MSDN Int64.TryParse docs
iugsix8n2#
需要注意的是,空字符串不是null,它是由0个字符组成的字符串。要测试这两个字符串,你通常会使用静态函数
string.IsNullOrEmpty(str)
。然而,在你的例子中,输入不会变成null,但是你需要在解析之前测试空字符串,之后再做没有意义。所以你可以这样做:您的代码仍然不能工作,因为您不能确定输入解析为字符串,因此您可以使用
int.TryParse
作为另一个答案的建议。记住在某处给RandomNum赋值。
要使用TryParse,您可以执行以下操作: