Toggle navigation
科创
{{ getSearchSuggestionLabel(suggestion) }}
{{ part.text }}
查看更多
登录
 
注册
电波
论坛
专栏
应用
登录
注册
{{ getSearchSuggestionLabel(suggestion) }}
{{ part.text }}
查看更多
论坛
>
计算机科学
>
软件综合
文号
t52970
阅读
4759
回复
5
收藏
4
关于长度单位换算 (内有代码)
tonghuamy
2012/12/14
软件综合
IP:四川
不是现在很多软件都有单位换算吗?就拿长度来说吧,比如每一个框填上你要换算的数字,然后选单位(米,千米,英里....等),然后再选择需要转成什么单位,所以还需要选择一次(还是 米,千米,英里....等),那好 比如你想算一下120米等于多少英寸,那你在每一个框填120,然后选择“米”,然后再选择需要转换成的“英寸” ,然后第二个框里就会显示出转换后的结果,实现起来简单还是复杂?
我的方案有两种
一、switch case实现 ,嵌套 通过第一个单位选择进入第一个switch,然后第二个单位选择进入第二个switch
二、用if else 类似上面的 if(第一个选择 && 第二个选择)
伪代码:
一、if else
comboBox1.Items.Add("千米"); //初始化输入单位标签
comboBox1.Items.Add("米");
comboBox1.Items.Add("分米");
comboBox2.Items.Add("千米"); //初始化输出单位标签
comboBox2.Items.Add("米");
comboBox2.Items.Add("分米");
string I = comboBox1.Text; //输入单位选择
string O = comboBox2.Text; //输出单位选择
string Ix_ = textBox1.Text; //输入数值
string Ox_ = textBox2.Text; //输出数值
int Ix = 0;
if (Ix_ != string.Empty)
Ix = Int32.Parse(Ix_);
if (I == "千米" && O == "米")
Ox_ = (Ix * 1000).ToString();
else if (I == "千米" && O == "分米")
Ox_ = (Ix * 10000).ToString();
............
textBox2.Text = Ox_;
................
}
二、用switch case实现
comboBox1.Items.Add("千米"); //初始化输入单位标签
comboBox1.Items.Add("米");
comboBox1.Items.Add("分米");
comboBox2.Items.Add("千米"); //初始化输出单位标签
comboBox2.Items.Add("米");
comboBox2.Items.Add("分米");
string I = comboBox1.Text; //输入单位选择
string O = comboBox2.Text; //输出单位选择
string Ix_ = textBox1.Text; //输入数值
string Ox_ = textBox2.Text; //输出数值
int Ix = 0;
if (Ix_ != string.Empty)
Ix = Int32.Parse(Ix_);
switch(I)
{
case "千米":
switch(O)
{
case "米": Ox_ = (Ix * 1000).ToString(); break;
case "分米": Ox_ = (Ix * 10000).ToString(); break;
}
break;
case "米":
switch (O)
{
case "千米": Ox_ = (Ix * 0.001).ToString(); break;
case "分米": Ox_ = (Ix * 10).ToString(); break;
}
break;
//...............
}
textBox2.Text = Ox_;
不晓得还有没有更好的方法?
来自:
计算机科学
/
软件综合
5
0
全部
只看作者
我说要有光
14年0个月前
IP:未同步
479040
1楼
这貌似不是现代程序设计领域里该考虑的问题啊。。。
你说的两种方案都可以,现在大多数语言的库里都有一种叫hashtable的实现,直接把名称存成Key,比率存成Value即可,当然,嵌入式领域另算
加载全文
引用
评论
0
相对论万岁
14年0个月前
IP:未同步
479151
2楼
没学vb……
表示曾经想过其它的方法
先选择输入单位,然后输入数字
之后根据输入单位将输入的单位换成一个标准单位,例如输入cm先换成m,用一个变量保存
then
选择输出单位,再从标准单位换成所需单位
例如5cm换成dm
先将5cm换成0.05m
再换成0.5dm
在单位比较多的情况下应该比较简单……
加载全文
引用
评论
0
tonghuamy
作者
14年0个月前
IP:未同步
479215
3楼
见笑了 ,其实我之前搞JAVA 惭愧啊!都没想到一楼说的hashTable(因为现在在弄C#,上面代码也是C#写的)。 还有二楼说的也不错,转正一个单位,所有的都用那个再转换。终于明白为什么有编程高手了,他们写的代码确实让人看不懂,简单的几句 能做很多事情
加载全文
引用
评论
0
kesshei
14年0个月前
IP:未同步
482007
4楼
简单明了,学习了 高手众多啊
加载全文
引用
评论
0
全部
只看作者
在列表中查看
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
编辑
删除
{{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
保存
取消
我也是有底线的
保存中...
保存