由于预测的错误而停止计算

时间:2016-12-29 14:01:55

标签: c#

我不确定如何提出这个问题,因为我不能很好地翻译它。

我目前正在开发自己的Windows窗体应用程序,它将以英寸计算给定包的尺寸(以字符串格式一起写入)并以厘米,毫米甚至米为单位计算尺寸,此时我很想知道如果有人输入了错误的维度并且无法解析给定的度量,那该怎么办呢。

像Environment.Exit()之类的东西,但没有关闭应用程序只是停止计算并写一条错误发生的消息。

如果有这样的问题得到解答,请将其链接起来,因为我无法找到它。

namespace PretvaranjeDimenzija
{
public partial class Form1 : Form
{
public Form1()
{
    InitializeComponent();
}
public double mjera = 1;
public bool pogreska = false;
public string mjeraKratica = " cm";
public string dimenzijeIspis = "";
private void buttonIzracunaj_Click(object sender, EventArgs e)
{
    string dim = textBoxDimenzije.Text;
    if (dim.Contains('.'))
    {
       dim = dim.Replace('.', ',');
    }
    if (dim.Length != 0)
    {
        if (dim.IndexOf('x') != -1)
        {
            string[] multiDim = dim.Split('x');
            double[] multiDimCentimetara = new double[multiDim.Length];
            bool[] uspjeh = new bool[multiDim.Length];
            for (int i = 0; i < multiDim.Length; i++)
            {
                uspjeh[i] = double.TryParse(multiDim[i], out multiDimCentimetara[i]);
                if (uspjeh[i] == false)
                {
                    pogreska = true;
                    goto kraj;
                }
            }
            kraj:
            if (pogreska == true)
            {
                MessageBox.Show("Doslo je do pogreske!");
                pogreska = false;
            }
            else
            {
                double[] dimenzije = new double[multiDim.Length];
                for (int i = 0; i < dimenzije.Length; i++)
                {
                    dimenzije[i] = multiDimCentimetara[i] * 2.54 * mjera;
                    if (i == dimenzije.Length - 1)
                    {
                        dimenzijeIspis += dimenzije[i].ToString() + mjeraKratica;
                    }
                    else
                    {
                        dimenzijeIspis += dimenzije[i].ToString() + "x";
                    }
                }
                textBoxIspisDimenzija.Text = dimenzijeIspis;
                dimenzijeIspis = "";
            }
        }
        else
        {
            double dimCentimetara;
            if(double.TryParse(dim, out dimCentimetara))
            {
                double dimenzija = dimCentimetara * 2.54 * mjera;
                dimenzijeIspis = dimenzija.ToString() + mjeraKratica;
                textBoxIspisDimenzija.Text = dimenzijeIspis;
                dimenzijeIspis = "";
            }
            else
            {
                MessageBox.Show("Doslo je do pogreske!");
                return;
            }

        }
    }
}

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
    mjera = 0.01;
    mjeraKratica = " m";
    if (radioButton2.Checked == true)
    {
        radioButton2.Checked = false;
        radioButton1.Checked = true;
    }
    if (radioButton3.Checked == true)
    {
        radioButton3.Checked = false;
        radioButton1.Checked = true;
    }
}
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
    mjera = 1;
    mjeraKratica = " cm";
    if (radioButton1.Checked == true)
    {
        radioButton1.Checked = false;
        radioButton2.Checked = true;
    }
    if (radioButton3.Checked == true)
    {
        radioButton3.Checked = false;
        radioButton2.Checked = true;
    }
}
private void radioButton3_CheckedChanged(object sender, EventArgs e)
{
    mjera = 10;
    mjeraKratica = " mm";
    if (radioButton2.Checked == true)
    {
        radioButton2.Checked = false;
        radioButton3.Checked = true;
    }
    if (radioButton1.Checked == true)
    {
        radioButton1.Checked = false;
        radioButton3.Checked = true;
    }
}

}

1 个答案:

答案 0 :(得分:1)

根据您的要求,它应该非常简单。例如,您可以在方法中使用基本的if块。

void CalculateStuff()
{
    // Get input.  Do stuff.

    if (IsInvalid)
    {
        MessageBox.Show("You did a bad thing.");
        return; // exit the method.
    }

    // now that we know the input is good, do other stuff.
}

IsInvalid替换为您想要的任何检查条件,如果输入无效,则将返回true。