我想知道我是否能得到一些帮助来创建一个简单的数学公式。最近,我接受了一次tier1程序员的面试,并被要求编写一个程序。我把整个事情做得很好,但让我面试失败的是,我需要创建一个数学公式来将不同的度量单位转换为其他度量单位。这很容易,但困难的是,我需要根据以英尺为单位的长度转换这些不同的度量单位。这真的让我很恼火,因为那家伙说我可以做一个方程式,这个方程式可以用于所有不同度量单位的转换。因此,给定的当前度量单位包含其原始度量单位和以英尺为单位的度量。该公式必须利用英尺的不同长度来进行这些转换。否则,我会通过除法和乘法得到我的答案。不同的度量单位如下所示:
inch,.083333
fathom,6
foot,1
furlong,660
kilometer,3281.5
meter,3.2815
mile,5280
rod,16.5
yard,3 逗号后面的数字是以英尺为单位的长度。我已经盯着这个看了几个小时了,但我想不出一个方程式来用来描述所有的长度。对于那些给予我帮助的人,我真的很感激,我开始对此感到失望。
为了便于编程,我使用X作为原始度量单位,使用Y作为所需的单位或度量,使用Z作为需要转换的输入长度。
发布于 2015-04-19 06:23:55
你可以这样做:
import java.util.HashMap;
public class ConvertLength {
private static HashMap<String,Double> lengthInFeet
= new HashMap<String,Double>();
static {
lengthInFeet.put("inch", 0.083333);
lengthInFeet.put("inches", 0.083333);
lengthInFeet.put("fathom", 6.0);
lengthInFeet.put("fathoms", 6.0);
lengthInFeet.put("foot", 1.0);
lengthInFeet.put("feet", 1.0);
lengthInFeet.put("furlong", 660.0);
lengthInFeet.put("furlongs", 660.0);
lengthInFeet.put("kilometer", 3281.5);
lengthInFeet.put("kilometers", 3281.5);
lengthInFeet.put("meter", 3.2815);
lengthInFeet.put("meters", 3.2815);
lengthInFeet.put("mile", 5280.0);
lengthInFeet.put("miles", 5280.0);
lengthInFeet.put("rod", 16.5);
lengthInFeet.put("rods", 16.5);
lengthInFeet.put("yard", 3.0);
lengthInFeet.put("yards", 3.0);
};
public static double convert(double length, String from, String to) {
return length * lengthInFeet.get(from) / lengthInFeet.get(to);
}
public static void main(String[] args) {
double length = Double.parseDouble(args[0]);
String from = args[1];
String to = args [2];
System.out.println(length + " " + from + " = "
+ convert(length,from,to) + " " + to);
}
}发布于 2015-04-19 06:49:05
抛开实际问题不谈,你可以使用这样的等式:
长度=αvwᵀ
这里,α是以英尺为单位的长度,v是包含转换系数的向量(即0.08333,6,1,660,…)W是一个向量,像0,…,1,…,0,在对应于所需单位的索引处的值为1。
https://stackoverflow.com/questions/29723207
复制相似问题