2011-03-24 36 views
1

我正在尝试制作一种将任何单位转换为任何大单位的方法。我需要,我猜为每个输入提供参数,所以我猜测它需要询问用户参数....startingNum,conversionFactor,outPutNum,但我不确定从哪里开始。我已经用英寸做了一个:Java - 将任何单位转换为任何单位

public Convertor() 
{ 
    inches=0; 
    feet=0; 
    yards=0; 
    leftoverInches=0; 
} 

/** 
* Mutator method to convert inches to feet 
*/ 
public void convertValuesInchtoFeet(int anyInches) 
{ 
    inches=anyInches; 
    feet=anyInches/12; 
    leftoverInches= anyInches%12; 
    System.out.println(inches+" inches = " +feet+" feet."); 
    System.out.println("There are " +leftoverInches +" leftover inches"); 

} 

请帮忙!谢谢。

+0

好像你需要枚举(http://download.oracle.com/javase/tutorial/java/javaOO/enum.html)。 – 2011-03-24 19:38:28

+4

@user:也许你应该在提交反馈给你的[上一个问题](http://stackoverflow.com/questions/5424390/convert-feet-to-inches)之前,转到新的?顺便说一下,如果您在20分钟后忘记了用户名,它就是[jtm22](http://stackoverflow.com/users/675495/jtm22)。 – 2011-03-24 19:41:12

+0

试着想办法从你以前的问题推广:http://stackoverflow.com/questions/5424350/convert-feet-to-inches – Feanor 2011-03-24 19:41:38

回答

3

任何单位的任何单元是有点模糊,但通常需要提供: 一个)输入号码 B)输入单元 c)中输出单元

假设你想的是不一般的功能英尺和码之间的转换。

我想看看TimeUnit API,看看你是否有不同的想法。它使用枚举方法,但我不知道你对Enums有多熟悉。

噢,TIMEUNIT这样使用: TimeUnit.SECONDS.toMillis(1); // Returns 1000

2

使用Enums存储的各种单元的名称。例如,

public Enum Unit { 
    MM, CM, INCH, FEET; 
} 

按照上述页面中的行星示例。您可以为每个单位创建一个称为毫米数的属性(假定毫米为最小单位),并使用函数getNumberOfMillimeters()返回它。因此,CM.getNumberOfMillimeters()将返回10,依此类推。然后,你可以创建一个这样的通用函数:

public double convert(Unit unit1, Unit unit2, double input) { 
     return input*(unit2.getNumberOfMillimeters()/unit1.getNumberOfMillimeters()); 
} 

我希望它有帮助。评论你是否发现有任何困难。

+0

我不知道......这似乎太高级了。我只是想添加一个输入数字,conversionfactor乘以,和一个输出数字。这听起来像是很容易做到的吗? – tekman22 2011-03-24 19:48:59

+0

@ user675570:这是正确的方法,而不是不必要的先进。直接转换因素的问题是,您需要为每对单元存储一个。因此,您需要计算和存储的转换因子的数量随着您想要支持的单位数量而增长。这种方式实际上使用一个单位作为基础 - 转换的中点 - 因此大幅减少了必须进行硬编码的转换因子的数量。 – JavadocMD 2011-03-24 20:20:27

+0

顺便提一句,你可以在这里看到另一个工作示例:http://code.google.com/p/simplelatlng/source/browse/src/main/java/com/javadocmd/simplelatlng/util/LengthUnit.java – JavadocMD 2011-03-24 20:23:20

1

创建枚举:

enum Unit { 
    INCHES, FEETS, YARDS 
} 

和你的量类:

class Amount { 
    private Unit unit; 
    private double amount; 
    //getters and setters 
} 

及主要部件:factorsMap它有两个参数(源单元,目的地装置)与一些值连接:

sourceUnit * value = destinationUnit, 

然后转换方法看s这样:

public void convert(Amount source, Amount destination) { 
    double factor = factorsMap.get(source.getUnit(), destination.getUnit()); 
    destination.setAmount(source.getAmount() * factor); 
} 
0

请考虑使用UCUM(统一代码为度量单位)。这可以帮助开发Java中的转换器。

为计量单位的统一代码(UCUM)是指包括措施,各单位的编码系统在国际科学,工程和企业正在现代感的使用:什么UCUM是,由UCUM本身解释。

我用UCUM为我的项目:calculate.plus

相关问题