Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 胰蛋白酶法_C#_Visual Studio 2012_Tryparse - Fatal编程技术网

C# 胰蛋白酶法

C# 胰蛋白酶法,c#,visual-studio-2012,tryparse,C#,Visual Studio 2012,Tryparse,我对下面的代码有疑问。我正在尝试使用int.TryParse方法检查用户的输入(如果用户在文本框中输入“abc”,它将显示一个错误,告诉用户这是错误的输入,他们应该输入一个整数)。我想知道为什么我的代码不起作用。以下是我所拥有的: private void CalcStayChargesButton_Click(object sender, EventArgs e) { // Get the user input. NumberOfDays = int.Parse(DaysI

我对下面的代码有疑问。我正在尝试使用
int.TryParse
方法检查用户的输入(如果用户在文本框中输入“abc”,它将显示一个错误,告诉用户这是错误的输入,他们应该输入一个整数)。我想知道为什么我的代码不起作用。以下是我所拥有的:

private void CalcStayChargesButton_Click(object sender, EventArgs e)
{
     // Get the user input.
     NumberOfDays = int.Parse(DaysInHospitalChargesTextBox.Text);
     if (int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
     {
         MessageBox.Show("Please enter a whole number.");
     }
}

在代码视图中没有错误,但当我运行应用程序测试它时,它返回到第4行并高亮显示,但我无法理解。请记住,NumberOfDays整数已经设置在表单开头下方,因此我可以在整个应用程序中普遍使用它。有人能给我一些关于如何使它工作的提示吗?我可能忽略了什么。非常感谢。

int.TryParse
在无法解析时返回false,因此您必须输入
进入您的状态:

private void CalcStayChargesButton_Click(object sender, EventArgs e)
{
    // Get the user input.
    if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
    {
        MessageBox.Show("Please enter a whole number.");
    }
}
为什么使用
int.Parse
然后使用
int.TryParse
?使用其中一个,而不是两个

您还必须有一个名为
NumberOfDays
的变量,该变量必须是
int
类型。如果类中没有此类变量,请在
If
语句之前添加一个:

int NumberOfDays;
if(!int.TryParse(...))

我想这就是你想要的:

private void CalcStayChargesButton_Click(object sender, EventArgs e)
{
    // Get the user input.
    int NumberOfDays;
    if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
    {
        MessageBox.Show("Please enter a whole number.");
    }
}
如果int.Parse不是一个可解析的数字,那么第一次调用int.Parse将抛出一个异常——这就是TryParse的作用,如果不能解析该数字,它将返回false。另外,当消息是有效数字时,您的逻辑正在显示该消息,因此您需要
使语句解析为true

if (int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
        {
            MessageBox.Show("Please enter a whole number.");
        }
通过执行此操作,如果解析成功,则显示此消息,您应该执行此操作

if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
        {
            MessageBox.Show("Please enter a whole number.");
        }
int.TryParse(Something,out value)尝试解析“Something”的值,并将值设置为out(如果这是正确的)。 如果正常,int.TryParse将返回true(如果不正常,则返回false)

因此,对于您的示例,您应该做的是:

private void CalcStayChargesButton_Click(object sender, EventArgs e)
{
     int NumberOfDays; //Create the variable
     //try to parse DaysInHosputalChargesTextBox.Text
     if (!(int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))) 
     {
         // "!" means the parsing was not ok. So the user should reenter the number     
         MessageBox.Show("Please enter a whole number.");
     }
     else
     {
         //some code to do if the parsing was successful. 
     }
}
有关更多信息,请参阅。

请参阅如何使用


哦,好的。我完全忽略了我试图解析两次。对不起,各位。这太简单了。谢谢所有帮助我的人。这应该足够我完成我的申请了,再次感谢你。
private void CalcStayChargesButton_Click(object sender, EventArgs e)
{
    int NumberOfDays;
    if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
    {
        MessageBox.Show("Please enter a whole number.");
    }
}