当用户没有在文本框中输入任何内容时,我如何让代码使用不同的变量



我正在为一个大学项目制作里程计算器。如果用户没有在文本框中输入任何内容,我想确保程序使用全局变量。示例:如果用户没有在costPerLitre框中输入任何内容,则使用globals.averageCostPerLitre


public static class globals
{
public const double averageCostPerLitre = 1.25;
public const double averageMilesPerGallon = 50.5;
public const int averageGallonsInTank = 14;
public const int highestSpeed = 70;
public const int lowestSpeed = 30;
}

private void button2_Click(object sender, EventArgs e)
{
double costPerLitre = Convert.ToDouble(textBox5.Text);
double milesPerGallon = Convert.ToDouble(textBox6.Text);
double routeMiles = Convert.ToInt32(textBox7.Text);
double numberOfGallons = Convert.ToInt32(textBox8.Text);
if (costPerLitre == 0)
{
costPerLitre = globals.averageCostPerLitre;
}
else if (milesPerGallon == 0)
{
milesPerGallon = globals.averageMilesPerGallon;
}
else if (numberOfGallons == 0)
{
numberOfGallons = globals.averageGallonsInTank;
}
else
{
// Do nothing
}

我的问题是,当代码运行时,没有任何输入,然后它就会停止并中断。我不知道如何解决这个问题。

完整代码:

https://i.stack.imgur.com/biY5d.png

double costPerLitre = Convert.ToDouble(textBox5.Text)一样,每一行都有错误,因为当文本为空时,无法将其转换为双精度!

所以你可以用修改每一行

double costPerLitre = string.IsNullOrEmpty(textBox5.Text)  
? globals.averageCostPerLitre  
: Convert.ToDouble(textBox5.Text);

除了Marco的答案外,我建议您使用double。TryParse是一种更好的做法,因为它不会在出错时抛出异常,并返回一个bool,指示是否可以进行转换。

相关内容

  • 没有找到相关文章

最新更新