计算度量转换

时间:2016-02-24 03:14:09

标签: c# listbox

我是C#的新手,我正在上课,我正在努力。

分配是使用文本框值(valuetextbox)创建转换应用程序,并有2个列表框,其中包含英寸,英尺和码的测量值。目标是根据在第一个列表框中选择的度量单位(selectedinitialunit)转换值,并根据在第二个列表框中选择的度量单位(selectedconvertedunit)在标签中发布值。根据输入到valuetextbox中的值,我错过了如何在我的selectedinitialunit和我的selectedconvertedunit之间进行比较(数学)。

namespace Measurement_Conversion
{
    public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void convertedValueLabel_Click(object sender, EventArgs e)
    {

    }

    private void exitButton_Click(object sender, EventArgs e)
    {
        Close();
    }

    private void resetButton_Click(object sender, EventArgs e)
    {
        valueTextBox.Text = "";
        convertedValueLabel.Text = "";
        DesiredUnitBox.SelectedIndex = -1;
        InitialUnitBox.SelectedIndex = -1;
        valueTextBox.Focus();
    }

    private void convertButton_Click(object sender, EventArgs e)
    {

        //Declare Variables
        decimal initialvalue;
        decimal convertedvalue;
        string selectedInitialUnit;
        string selectedConvertedUnit;



        //Grab Initial Value
        initialvalue = int.Parse(valueTextBox.Text);

        //Determining Initial Unit has been selected.
        if (InitialUnitBox.SelectedIndex != -1)
        {
            selectedInitialUnit = InitialUnitBox.SelectedItem.ToString();

        }
        else { MessageBox.Show("Please select an Initial Unit of measurement."); }


        //Determining Desired Conversion Unit has been selected
        if (DesiredUnitBox.SelectedIndex != -1)
        {
            selectedConvertedUnit = DesiredUnitBox.SelectedItem.ToString();
        }
        else { MessageBox.Show("Please select a desired conversion unit of measurement."); }

        //Switch Statement
        switch (selectedInitialUnit)
        {
            case "Inches":
                convertedValueLabel.Text = ()
                break;
            case "Feet":
                break;
            case "Yards":
                break;


        }
    }



}

}

我在纸上写的内容是这样的 - 这不是代码,只是我的思考过程:

if selectedinitialunit = INCHES and selectedconvertedunit = INCHES
then messagebox.show("Please select a different selectedconvertedunit");

else selectedinitialunit = INCHES and selectedconvertedunit = FEET
then convertedvaluelabel.Text = initialvalue/12;

else selectedinitialunit = INCHES and selectedconvertedunit = YARDS
then convertedvaluelabel.Text = initialvalue/36;

等其他选定的初始单位。

我非常感谢你的帮助,我希望我不会到处都是。

提前谢谢!

3 个答案:

答案 0 :(得分:0)

您可以使用:

//Switch Statement
switch (selectedInitialUnit + "->" + selectedconvertedunit)
{
    case "Inches->Feet":
        convertedValueLabel.Text = ()
        break;
    case "Feet->Inches":
        break;
    case "Yards->Feet":
        break;
    case "Yards->Yards":
    case "Feet->Feet":
        Messagebox.Show("Please select a different selectedconvertedunit");
        break;
}

另一种方法是直接使用SelectedIndex

请在此处发帖,我建议不要使用以下代码。

如果InitialUnitBoxDesiredUnitBox有数字项< 10你可以使用:

switch (InitialUnitBox.SelectedIndex * 10 + DesiredUnitBox.SelectedIndex)
{
    case 0:       // = 0 * 10 + 0: first item of both box
    case 11:      // Same index both box
    case 22:      // Same index both box
        Messagebox.Show("Please select a different selectedconvertedunit");
        break;
    case 10:      // = 1 * 10 + 0: second item of InitialUnitBox and first item of DesiredUnitBox
        break;
    case 11:      // = 1 * 10 + 1
        break;
}

答案 1 :(得分:0)

最简单的方法是选择一个" base"测量并转换为该测量值,然后再从该测量值转换。

它甚至可以是米或毫米。这样你只需要2(如果选择英寸)或3个乘数就可以直接使用它。

Boolean

您也可以使用矩阵

const double InchesInFoot = 12;
const double InchesInYard = InchesInFoot * 3;

// step 1
double valueInches = input * constant above according to input measurement;

// step 2
double result = valueInches / constant according to output measurement;

这将使其更容易阅读,但您需要提前做更多的数学运算。

我想这需要你理解多维数组和事物,以及比需要更多的数学。

答案 2 :(得分:0)

你可以写这样的代码 -

        string selectedUnit = selectedinitialunit.SelectedItem.ToString();
        string convertedUnit = selectedconvertedunit.SelectedItem.ToString();
        double valueToConvert = double.Parse(initialvalue.Text);
        if (selectedUnit.Equals(convertedUnit))
        {
            MessageBox.Show("Please select a different selectedconvertedunit");
        }
        else
        {
            switch (selectedUnit)
            {
                case "INCHES":
                    switch (convertedUnit)
                    {
                        case "FEET":
                            convertedvaluelabel.Text = (valueToConvert / 12.0).ToString();
                            break;
                        case "YARDS":
                            convertedvaluelabel.Text = (valueToConvert / 36.0).ToString();
                            break;
                    }
                    break;
            }
        }

您始终可以在代码中添加某种异常以及错误处理和验证。