Math 为转换创建数学公式

Math 为转换创建数学公式,math,solver,units-of-measurement,equation-solving,Math,Solver,Units Of Measurement,Equation Solving,我想知道我是否能得到一些帮助,尝试创建一个简单的数学公式。我最近接受了一次面试,作为一名一级程序员工作,并被要求制作一个程序。我把整个过程做得很好,但让我面试失败的是,我需要创建一个数学公式,将不同的度量单位转换为其他度量单位。这很容易,但困难的是我需要根据给定的英尺长度转换这些不同的度量单位。这真的让我很烦,因为那个家伙说我可以只做一个方程,可以用于所有不同测量单位的转换。因此,给出的当前测量单位包含了它们的原始测量单位和以英尺为单位的测量。公式必须利用不同长度的英尺来进行这些转换。另一方面,

我想知道我是否能得到一些帮助,尝试创建一个简单的数学公式。我最近接受了一次面试,作为一名一级程序员工作,并被要求制作一个程序。我把整个过程做得很好,但让我面试失败的是,我需要创建一个数学公式,将不同的度量单位转换为其他度量单位。这很容易,但困难的是我需要根据给定的英尺长度转换这些不同的度量单位。这真的让我很烦,因为那个家伙说我可以只做一个方程,可以用于所有不同测量单位的转换。因此,给出的当前测量单位包含了它们的原始测量单位和以英尺为单位的测量。公式必须利用不同长度的英尺来进行这些转换。另一方面,我得到这份工作的方法是把所有的东西都除以,再乘以,得到我的答案。不同的计量单位如下:

inch,.083333    
fathom,6    
foot,1    
furlong,660    
kilometer,3281.5    
meter,3.2815    
mile,5280    
rod,16.5    
yard,3 
逗号后的数字是该度量单位的长度(以英尺为单位)。我已经盯着这个看了好几个小时了,但我无法找出一个方程式来计算所有长度。对于那些给我帮助的人,我真的很感激,我开始为此感到挫败


为了编程,我使用
X
作为原始测量单位,
Y
作为所需的单位或测量单位,
Z
作为需要转换的输入长度。

您可以这样做:

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);
  }
}
import java.util.HashMap;
公共类长度{
私有静态HashMap lengthInFeet
=新HashMap();
静止的{
长度英尺放置(“英寸”,0.083333);
长度英尺放置(“英寸”,0.083333);
长尺推杆(“英寻”,6.0);
长尺推杆(“英寻”,6.0);
长脚推杆(“脚”,1.0);
长脚推杆(“英尺”,1.0);
长度英尺(furlong),660.0;
长度英尺(furlongs),660.0;
长度英尺(公里),3281.5;
lengthInFeet.put(“公里”,3281.5);
长度英尺(米),3.2815;
长度英尺(米),3.2815;
长度英尺(英里),5280.0;
长度英尺(英里),5280.0;
长脚推杆(“杆”,16.5);
长度英尺放置(“杆”,16.5);
长度英尺(码),3.0;
长脚推杆(“码”,3.0);
};
公共静态双转换(双长度、字符串从、字符串到){
返回长度*lengthInFeet.get(from)/lengthInFeet.get(to);
}
公共静态void main(字符串[]args){
double length=double.parseDouble(args[0]);
字符串from=args[1];
字符串to=args[2];
System.out.println(长度+“”+from+“”=
+转换(长度、从、到)+“到”;
}
}

撇开实际问题不谈,你可以使用这样一个等式:

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);
  }
}
长度=αvwᵀ

这里,α是以英尺为单位的长度,v是包含转换因子的向量(即[0.08333,6,1,660,…]),w是类似于[0,…,1,…,0]的向量,其值在对应于所需单位的索引处为1