C# 距离转换器
我正在为距离转换器开发一个C#Forms应用程序,这是我现在拥有的代码,我需要声明toDistance,但我不太确定如何用距离转换的结果声明它。如果可以的话请帮忙,我对这方面还不太熟悉C# 距离转换器,c#,winforms,C#,Winforms,我正在为距离转换器开发一个C#Forms应用程序,这是我现在拥有的代码,我需要声明toDistance,但我不太确定如何用距离转换的结果声明它。如果可以的话请帮忙,我对这方面还不太熟悉 private void btnConvert_Click(object sender, EventArgs e) { float fromDistance; float toDistance; fromDistance = int.Parse(distanceinput.Text);
private void btnConvert_Click(object sender, EventArgs e)
{
float fromDistance;
float toDistance;
fromDistance = int.Parse(distanceinput.Text);
string measureInput = fromList.Items[fromList.SelectedIndex].ToString();
string measureOutput = toList.Items[toList.SelectedIndex].ToString();
distanceOutput.Text = toDistance.ToString();
switch (measureInput)
{
case "Yard":
switch (measureOutput)
{
case "Yard":
toDistance = fromDistance;
break;
case "Foot":
toDistance = fromDistance * 3;
break;
case "Inches":
toDistance = fromDistance * 3 * 12;
break;
}
break;
case "Foot":
switch (measureOutput)
{
case "Foot":
toDistance = fromDistance;
break;
case "Yard":
toDistance = fromDistance / 3;
break;
case "Inch":
toDistance = fromDistance * 12;
break;
}
break;
case "Inch":
switch (measureOutput)
{
case "Inch":
toDistance = fromDistance;
break;
case "Foot":
toDistance = fromDistance / 12;
break;
case "Yards":
toDistance = fromDistance / (3 * 12);
break;
}
break;
}
}
是否尝试移动距离输出。Text=toDistance.ToString();到函数的末尾
private void btnConvert_Click(object sender, EventArgs e)
{
float fromDistance;
float toDistance;
fromDistance = int.Parse(distanceinput.Text);
string measureInput = fromList.Items[fromList.SelectedIndex].ToString();
string measureOutput = toList.Items[toList.SelectedIndex].ToString();
switch (measureInput)
{
case "Yard":
switch (measureOutput)
{
case "Yard":
toDistance = fromDistance;
break;
case "Foot":
toDistance = fromDistance * 3;
break;
case "Inches":
toDistance = fromDistance * 3 * 12;
break;
}
break;
case "Foot":
switch (measureOutput)
{
case "Foot":
toDistance = fromDistance;
break;
case "Yard":
toDistance = fromDistance / 3;
break;
case "Inch":
toDistance = fromDistance * 12;
break;
}
break;
case "Inch":
switch (measureOutput)
{
case "Inch":
toDistance = fromDistance;
break;
case "Foot":
toDistance = fromDistance / 12;
break;
case "Yards":
toDistance = fromDistance / (3 * 12);
break;
}
break;
}
distanceOutput.Text = toDistance.ToString();
}
是否尝试移动距离输出。Text=toDistance.ToString();到函数的末尾
private void btnConvert_Click(object sender, EventArgs e)
{
float fromDistance;
float toDistance;
fromDistance = int.Parse(distanceinput.Text);
string measureInput = fromList.Items[fromList.SelectedIndex].ToString();
string measureOutput = toList.Items[toList.SelectedIndex].ToString();
switch (measureInput)
{
case "Yard":
switch (measureOutput)
{
case "Yard":
toDistance = fromDistance;
break;
case "Foot":
toDistance = fromDistance * 3;
break;
case "Inches":
toDistance = fromDistance * 3 * 12;
break;
}
break;
case "Foot":
switch (measureOutput)
{
case "Foot":
toDistance = fromDistance;
break;
case "Yard":
toDistance = fromDistance / 3;
break;
case "Inch":
toDistance = fromDistance * 12;
break;
}
break;
case "Inch":
switch (measureOutput)
{
case "Inch":
toDistance = fromDistance;
break;
case "Foot":
toDistance = fromDistance / 12;
break;
case "Yards":
toDistance = fromDistance / (3 * 12);
break;
}
break;
}
distanceOutput.Text = toDistance.ToString();
}
这一行:
distanceOutput.Text = toDistance.ToString();
不是的意思是:“控制距离输出的文本应始终跟随toDistance的“ToString”
相反,它的意思是“现在就做”(如:执行该行的那一刻)。它没有关系
因此,解决方案是将该行移动到(外部)switch语句之后,在该语句中计算toDistance
但是,您可能需要对其进行初始化(float-toDistance=0f;
),否则编译器会抱怨您试图使用未初始化的变量。它看不出您在开关中使用了所有可能的值。此行:
distanceOutput.Text = toDistance.ToString();
不是的意思是:“控制距离输出的文本应始终跟随toDistance的“ToString”
相反,它的意思是“现在就做”(如:执行该行的那一刻)。它没有关系
因此,解决方案是将该行移动到(外部)switch语句之后,在该语句中计算toDistance
但是,您可能需要对其进行初始化(float-toDistance=0f;
),否则编译器会抱怨您试图使用未初始化的变量。它看不出您已经使用了开关中所有可能的值。您需要将最终赋值语句移动到开关后
此外,我不会使用嵌套开关。它很难读取和调试。我会将输入转换为最小的可能单位(在您的情况下,英寸)。然后,我将最小单位测量值转换为用户要求的任何输出单位:
float inputInches = 0;
//Convert input to inches
switch(measureInput)
{
case "Yard":
inputInches = fromDistance * 3 * 12;
break;
case "Foot":
inputInches = fromDistance * 12;
break;
default:
inputInches = fromDistance;
break;
}
//Convert output to desired format
switch(measureOutput)
{
case "Yard":
toDistance = inputInches / 3 / 12;
break;
case "Foot":
toDistance = inputInches / 12;
break;
default:
toDistance = inputInches;
break;
}
distanceOutput.Text = toDistance.ToString();
需要考虑的其他一些事项:
- 文本比较很混乱。考虑使用输入类型创建<代码> EnUM <代码>(<代码>英寸,<代码>英尺,<代码>码> /代码>等。
按钮
事件中的编码也很混乱。考虑将此转换代码移到自己的方法。
切换后,您需要将最终分配声明移至
此外,我不会使用嵌套开关。它很难读取和调试。我会将输入转换为最小的可能单位(在您的情况下,英寸)。然后,我将最小单位测量值转换为用户要求的任何输出单位:
float inputInches = 0;
//Convert input to inches
switch(measureInput)
{
case "Yard":
inputInches = fromDistance * 3 * 12;
break;
case "Foot":
inputInches = fromDistance * 12;
break;
default:
inputInches = fromDistance;
break;
}
//Convert output to desired format
switch(measureOutput)
{
case "Yard":
toDistance = inputInches / 3 / 12;
break;
case "Foot":
toDistance = inputInches / 12;
break;
default:
toDistance = inputInches;
break;
}
distanceOutput.Text = toDistance.ToString();
需要考虑的其他一些事项:
- 文本比较很混乱。考虑使用输入类型创建<代码> EnUM <代码>(<代码>英寸,<代码>英尺,<代码>码> /代码>等。
按钮
事件中的编码也很混乱。考虑将此转换代码移到自己的方法。
我第一次看到嵌套开关!!有点伤眼睛我可能误解了你的意图,但是你不想要行距离输出吗;在switch语句之后?表单的其余部分看起来如何?为什么所有这些都在事件函数中,而不是将其移动到单独的函数中,并在单击事件中调用这些函数?在窗体中添加一个控件,并将其称为output
或results
或toDistTextBox
。然后在设置toDistance
的值之后,再设置输出
文本框的文本
属性。我第一次看到嵌套开关!!有点伤眼睛我可能误解了你的意图,但是你不想要行距离输出吗;在switch语句之后?表单的其余部分看起来如何?为什么所有这些都在事件函数中,而不是将其移动到单独的函数中,并在单击事件中调用这些函数?在窗体中添加一个控件,并将其称为output
或results
或toDistTextBox
。然后,在设置toDistance
的值之后,然后设置output
textbox的Text
属性。我这样做了,toDistance仍然存在识别问题Di这样做了,toDistance仍然存在识别问题