我对编程完全不熟悉,所以这可能是一个简单回答的愚蠢问题。我的应用程序允许用户输入数字,选择他们使用的测量单位,选择他们要转换的测量单位并进行转换。
我在最后一行代码中遇到一个错误,它阻止它工作:'不能隐式地将类型'int'转换为'string'。有人可以帮忙吗?
以下是代码:
private void convertButton_Click(object sender, EventArgs e)
{
int fromDistance;
int toDistance;
fromDistance = int.Parse(distanceInput.Text);
string measureInput = fromList.Items[fromList.SelectedIndex].ToString();
string measureOutput = toList.Items[toList.SelectedIndex].ToString();
switch (measureInput)
{
case "Yards":
switch (measureOutput)
{
case "Yards":
toDistance = fromDistance;
break;
case "Feet":
toDistance = fromDistance * 3;
break;
case "Foot":
toDistance = fromDistance * 3 * 12;
break;
}
break;
case "Feet":
switch (measureOutput)
{
case "Feet":
toDistance = fromDistance;
break;
case "Yards":
toDistance = fromDistance / 3;
break;
case "Foot":
toDistance = fromDistance * 12;
break;
}
break;
case "Foot":
switch (measureOutput)
{
case "Foot":
toDistance = fromDistance;
break;
case "Feet":
toDistance = fromDistance / 12;
break;
case "Yards":
toDistance = fromDistance / (3 * 12);
break;
}
break;
}
distanceOutput.Text = toDistance;
}
答案 0 :(得分:2)
distanceOutput.Text = toDistance.ToString();
看起来您可能习惯于动态输入语言? int以二进制表示形式存储,并且可以表示许多不同的值。 .ToString()转换为最常见的表示形式。
顺便说一下,您可能不应该为计算值类型使用整数,因为您将丢弃小数。使用double或float,并使用Math.Round(number,decimalPoints)。
答案 1 :(得分:0)
您可以使用枚举将输入/输出字符串转换为转换数字。这样做的好处是可以大大简化代码。但是,您必须确保列表中的字符串与枚举中的名称完全匹配。这个简单的算法将从任何输入转换为任何输出。
enum Conversions
{
Inches = 1,
Feet = 12,
Yards = 36
}
private void convertButton_Click(object sender, EventArgs e)
{
int fromDistance = 0;
int toDistance = 0;
fromDistance = int.Parse(distanceInput.Text);
Conversions measureinput = ((Conversions)Enum.Parse(typeof(Conversions), fromList.Items[fromList.SelectedIndex].ToString());
Conversions measureoutput = (Conversions)Enum.Parse(typeof(Conversions), toList.Items[toList.SelectedIndex].ToString());
toDistance = (fromdistance * (int)measureinput) / (int)measureoutput;
distanceOutput.Text = toDistance.ToString()+ " " + Enum.GetName(typeof(Conversions), measureoutput);
}