首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单元Converter...keeps返回0

单元Converter...keeps返回0
EN

Stack Overflow用户
提问于 2013-12-27 19:22:21
回答 1查看 118关注 0票数 1

我正试着在各单位之间转换。每当我运行测试器并输入一个输入时,输出总是0。例如,如果我要求从英寸转换为英尺,并输入12英寸,输出为0.0英尺。

这是我的课(很抱歉太长了,很多都是重复的)

代码语言:javascript
复制
public class UnitConverter
private String convertTo;
private String convertFrom;
private double value;
private double convertedResult;

//inches
final double INCHES_PER_INCH = 1;
final double FEET_PER_INCH = (1/12);
final double MILES_PER_INCH = 0.0000158;
final double MILLIMETERS_PER_INCH = 25.4;
final double CENTIMETERS_PER_INCH = 2.54;
final double METERS_PER_INCH = 0.0254;
final double KILOMETERS_PER_INCH = 0.0000254;

//feet
final double INCHES_PER_FOOT = 12;
final double FEET_PER_FOOT = 1;
final double MILES_PER_FOOT = 0.0001894;
final double MILLIMETERS_PER_FOOT = 304.80060996;
final double CENTIMETERS_PER_FOOT = 30.48;
final double METERS_PER_FOOT = 0.3048;
final double KILOMETERS_PER_FOOT = 0.0003048;

//miles
final double INCHES_PER_MILE = 63360;
final double FEET_PER_MILE = 5280;
final double MILES_PER_MILE = 1;
final double MILLIMETERS_PER_MILE = 1609344;
final double CENTIMETERS_PER_MILE = 160934.4;
final double METERS_PER_MILE = 1609.344;
final double KILOMETERS_PER_MILE = 1.609344;

//millimeters
final double INCHES_PER_MILLIMETER = 0.0393701;
final double FEET_PER_MILLIMETER = 0.0032808;
final double MILES_PER_MILLIMETER = 0.0000006;
final double MILLIMETERS_PER_MILLIMETER = 1;
final double CENTIMETERS_PER_MILLIMETER = 0.1;
final double METERS_PER_MILLIMETER = 0.001;
final double KILOMETERS_PER_MILLIMETER = 0.0000001;

//centimeters
final double INCHES_PER_CENTIMETER = 0.393701;
final double FEET_PER_CENTIMETER = 0.032808;
final double MILES_PER_CENTIMETER = 0.000006;
final double MILLIMETERS_PER_CENTIMETER = 10;
final double CENTIMETERS_PER_CENTIMETER = 1;
final double METERS_PER_CENTIMETER = 0.01;
final double KILOMETERS_PER_CENTIMETER = 0.000001;  

// meters
final double INCHES_PER_METER = 39.37;
final double FEET_PER_METER = 3.281;
final double MILES_PER_METER = 0.0006214;
final double MILLIMETERS_PER_METER = 1000;
final double CENTIMETERS_PER_METER = 100; 
final double METERS_PER_METER = 1;
final double KILOMETERS_PER_METER = 0.001;

//kilometers
final double INCHES_PER_KILOMETER = 39370;
final double FEET_PER_KILOMETER = 3280.83333;
final double MILES_PER_KILOMETER = 0.6214;
final double MILLIMETERS_PER_KILOMETER = 1000000;
final double CENTIMETERS_PER_KILOMETER = 100000; 
final double METERS_PER_KILOMETER = 1000;
final double KILOMETERS_PER_KILOMETER = 1;
/**
 * Constructs a unit converter that converts from one unit to another
 * @param convertFrom unit you are converting from
 * @param convertTo unit you want to convert to
 */

    public UnitConverter(String convertFrom, String convertTo)
    {
        this.convertFrom = convertFrom;
        this.convertTo = convertTo;
    }

/** 
 * Gets the converted value
 * @return getValue converted value
 */

    public double getValue(double value)
    {
        //inches
        if(convertFrom.equalsIgnoreCase("in") || convertFrom.equalsIgnoreCase("inch") || convertFrom.equalsIgnoreCase("inches"))
        {
            if(convertTo.equalsIgnoreCase("in") || convertTo.equalsIgnoreCase("inch") || convertTo.equalsIgnoreCase("inches"))
                convertedResult = INCHES_PER_INCH * value;
            else if(convertTo.equalsIgnoreCase("ft") || convertTo.equalsIgnoreCase("foot") || convertTo.equalsIgnoreCase("feet"))
                convertedResult = FEET_PER_INCH * value;
            else if(convertTo.equalsIgnoreCase("mi") || convertTo.equalsIgnoreCase("mile") || convertTo.equalsIgnoreCase("miles"))
                convertedResult = MILES_PER_INCH * value;
            else if(convertTo.equalsIgnoreCase("mm") || convertTo.equalsIgnoreCase("millimeter") || convertTo.equalsIgnoreCase("millimeters"))
                convertedResult = MILLIMETERS_PER_INCH * value;
            else if(convertTo.equalsIgnoreCase("cm") || convertTo.equalsIgnoreCase("centimeter") || convertTo.equalsIgnoreCase("centimeters"))
                convertedResult = CENTIMETERS_PER_INCH * value;
            else if(convertTo.equalsIgnoreCase("m") || convertTo.equalsIgnoreCase("meter") || convertTo.equalsIgnoreCase("meters"))
                convertedResult = METERS_PER_INCH * value;
            else if(convertTo.equalsIgnoreCase("km") || convertTo.equalsIgnoreCase("kilometer") || convertTo.equalsIgnoreCase("kilometers"))
                convertedResult = KILOMETERS_PER_INCH * value;
        }

        //feet
        else if(convertFrom.equalsIgnoreCase("ft") || convertFrom.equalsIgnoreCase("foot") || convertFrom.equalsIgnoreCase("feet"))
        {
            if(convertTo.equalsIgnoreCase("in") || convertTo.equalsIgnoreCase("inch") || convertTo.equalsIgnoreCase("inches"))
                convertedResult = INCHES_PER_FOOT * value;
            else if(convertTo.equalsIgnoreCase("ft") || convertTo.equalsIgnoreCase("foot") || convertTo.equalsIgnoreCase("feet"))
                convertedResult = FEET_PER_FOOT * value;
            else if(convertTo.equalsIgnoreCase("mi") || convertTo.equalsIgnoreCase("mile") || convertTo.equalsIgnoreCase("miles"))
                convertedResult = MILES_PER_FOOT * value;
            else if(convertTo.equalsIgnoreCase("mm") || convertTo.equalsIgnoreCase("millimeter") || convertTo.equalsIgnoreCase("millimeters"))
                convertedResult = MILLIMETERS_PER_FOOT * value;
            else if(convertTo.equalsIgnoreCase("cm") || convertTo.equalsIgnoreCase("centimeter") || convertTo.equalsIgnoreCase("centimeters"))
                convertedResult = CENTIMETERS_PER_FOOT * value;
            else if(convertTo.equalsIgnoreCase("m") || convertTo.equalsIgnoreCase("meter") || convertTo.equalsIgnoreCase("meters"))
                convertedResult = METERS_PER_FOOT * value;
            else if(convertTo.equalsIgnoreCase("km") || convertTo.equalsIgnoreCase("kilometer") || convertTo.equalsIgnoreCase("kilometers"))
                convertedResult = KILOMETERS_PER_FOOT * value;
        }

        //miles
        else if(convertFrom.equalsIgnoreCase("mi") || convertFrom.equalsIgnoreCase("mile") || convertFrom.equalsIgnoreCase("miles"))
        {
            if(convertTo.equalsIgnoreCase("in") || convertTo.equalsIgnoreCase("inch") || convertTo.equalsIgnoreCase("inches"))
                convertedResult = INCHES_PER_MILE * value;
            else if(convertTo.equalsIgnoreCase("ft") || convertTo.equalsIgnoreCase("foot") || convertTo.equalsIgnoreCase("feet"))
                convertedResult = FEET_PER_MILE * value;
            else if(convertTo.equalsIgnoreCase("mi") || convertTo.equalsIgnoreCase("mile") || convertTo.equalsIgnoreCase("miles"))
                convertedResult = MILES_PER_MILE * value;
            else if(convertTo.equalsIgnoreCase("mm") || convertTo.equalsIgnoreCase("millimeter") || convertTo.equalsIgnoreCase("millimeters"))
                convertedResult = MILLIMETERS_PER_MILE * value;
            else if(convertTo.equalsIgnoreCase("cm") || convertTo.equalsIgnoreCase("centimeter") || convertTo.equalsIgnoreCase("centimeters"))
                convertedResult = CENTIMETERS_PER_MILE * value;
            else if(convertTo.equalsIgnoreCase("m") || convertTo.equalsIgnoreCase("meter") || convertTo.equalsIgnoreCase("meters"))
                convertedResult = METERS_PER_MILE * value;
            else if(convertTo.equalsIgnoreCase("km") || convertTo.equalsIgnoreCase("kilometer") || convertTo.equalsIgnoreCase("kilometers"))
                convertedResult = KILOMETERS_PER_MILE * value;
        }

        //millimeters
        else if(convertFrom.equalsIgnoreCase("mm") || convertFrom.equalsIgnoreCase("millimeter") || convertFrom.equalsIgnoreCase("millimeters"))
        {
            if(convertTo.equalsIgnoreCase("in") || convertTo.equalsIgnoreCase("inch") || convertTo.equalsIgnoreCase("inches"))
                convertedResult = INCHES_PER_MILLIMETER * value;
            else if(convertTo.equalsIgnoreCase("ft") || convertTo.equalsIgnoreCase("foot") || convertTo.equalsIgnoreCase("feet"))
                convertedResult = FEET_PER_MILLIMETER * value;
            else if(convertTo.equalsIgnoreCase("mi") || convertTo.equalsIgnoreCase("mile") || convertTo.equalsIgnoreCase("miles"))
                convertedResult = MILES_PER_MILLIMETER * value;
            else if(convertTo.equalsIgnoreCase("mm") || convertTo.equalsIgnoreCase("millimeter") || convertTo.equalsIgnoreCase("millimeters"))
                convertedResult = MILLIMETERS_PER_MILLIMETER * value;
            else if(convertTo.equalsIgnoreCase("cm") || convertTo.equalsIgnoreCase("centimeter") || convertTo.equalsIgnoreCase("centimeters"))
                convertedResult = CENTIMETERS_PER_MILLIMETER * value;
            else if(convertTo.equalsIgnoreCase("m") || convertTo.equalsIgnoreCase("meter") || convertTo.equalsIgnoreCase("meters"))
                convertedResult = METERS_PER_MILLIMETER * value;
            else if(convertTo.equalsIgnoreCase("km") || convertTo.equalsIgnoreCase("kilometer") || convertTo.equalsIgnoreCase("kilometers"))
                convertedResult = KILOMETERS_PER_MILLIMETER * value;
        }

        //centimeters
        else if(convertFrom.equalsIgnoreCase("cm") || convertFrom.equalsIgnoreCase("centimeter") || convertFrom.equalsIgnoreCase("centimeters"))
        {
            if(convertTo.equalsIgnoreCase("in") || convertTo.equalsIgnoreCase("inch") || convertTo.equalsIgnoreCase("inches"))
                convertedResult = INCHES_PER_CENTIMETER * value;
            else if(convertTo.equalsIgnoreCase("ft") || convertTo.equalsIgnoreCase("foot") || convertTo.equalsIgnoreCase("feet"))
                convertedResult = FEET_PER_CENTIMETER * value;
            else if(convertTo.equalsIgnoreCase("mi") || convertTo.equalsIgnoreCase("mile") || convertTo.equalsIgnoreCase("miles"))
                convertedResult = MILES_PER_CENTIMETER * value;
            else if(convertTo.equalsIgnoreCase("mm") || convertTo.equalsIgnoreCase("millimeter") || convertTo.equalsIgnoreCase("millimeters"))
                convertedResult = MILLIMETERS_PER_CENTIMETER * value;
            else if(convertTo.equalsIgnoreCase("cm") || convertTo.equalsIgnoreCase("centimeter") || convertTo.equalsIgnoreCase("centimeters"))
                convertedResult = CENTIMETERS_PER_CENTIMETER * value;
            else if(convertTo.equalsIgnoreCase("m") || convertTo.equalsIgnoreCase("meter") || convertTo.equalsIgnoreCase("meters"))
                convertedResult = METERS_PER_CENTIMETER * value;
            else if(convertTo.equalsIgnoreCase("km") || convertTo.equalsIgnoreCase("kilometer") || convertTo.equalsIgnoreCase("kilometers"))
                convertedResult = KILOMETERS_PER_CENTIMETER * value;
        }

        //meters
        else if(convertFrom.equalsIgnoreCase("m") || convertFrom.equalsIgnoreCase("meter") || convertFrom.equalsIgnoreCase("meters"))
        {
            if(convertTo.equalsIgnoreCase("in") || convertTo.equalsIgnoreCase("inch") || convertTo.equalsIgnoreCase("inches"))
                convertedResult = INCHES_PER_METER * value;
            else if(convertTo.equalsIgnoreCase("ft") || convertTo.equalsIgnoreCase("foot") || convertTo.equalsIgnoreCase("feet"))
                convertedResult = FEET_PER_METER * value;
            else if(convertTo.equalsIgnoreCase("mi") || convertTo.equalsIgnoreCase("mile") || convertTo.equalsIgnoreCase("miles"))
                convertedResult = MILES_PER_METER * value;
            else if(convertTo.equalsIgnoreCase("mm") || convertTo.equalsIgnoreCase("millimeter") || convertTo.equalsIgnoreCase("millimeters"))
                convertedResult = MILLIMETERS_PER_METER * value;
            else if(convertTo.equalsIgnoreCase("cm") || convertTo.equalsIgnoreCase("centimeter") || convertTo.equalsIgnoreCase("centimeters"))
                convertedResult = CENTIMETERS_PER_METER * value;
            else if(convertTo.equalsIgnoreCase("m") || convertTo.equalsIgnoreCase("meter") || convertTo.equalsIgnoreCase("meters"))
                convertedResult = METERS_PER_METER * value;
            else if(convertTo.equalsIgnoreCase("km") || convertTo.equalsIgnoreCase("kilometer") || convertTo.equalsIgnoreCase("kilometers"))
                convertedResult = KILOMETERS_PER_METER * value;
        }

        //kilometers
        else if(convertFrom.equalsIgnoreCase("km") || convertFrom.equalsIgnoreCase("kilometer") || convertFrom.equalsIgnoreCase("kilometers"))
        {
            if(convertTo.equalsIgnoreCase("in") || convertTo.equalsIgnoreCase("inch") || convertTo.equalsIgnoreCase("inches"))
                convertedResult = INCHES_PER_KILOMETER * value;
            else if(convertTo.equalsIgnoreCase("ft") || convertTo.equalsIgnoreCase("foot") || convertTo.equalsIgnoreCase("feet"))
                convertedResult = FEET_PER_KILOMETER * value;
            else if(convertTo.equalsIgnoreCase("mi") || convertTo.equalsIgnoreCase("mile") || convertTo.equalsIgnoreCase("miles"))
                convertedResult = MILES_PER_KILOMETER * value;
            else if(convertTo.equalsIgnoreCase("mm") || convertTo.equalsIgnoreCase("millimeter") || convertTo.equalsIgnoreCase("millimeters"))
                convertedResult = MILLIMETERS_PER_KILOMETER * value;
            else if(convertTo.equalsIgnoreCase("cm") || convertTo.equalsIgnoreCase("centimeter") || convertTo.equalsIgnoreCase("centimeters"))
                convertedResult = CENTIMETERS_PER_KILOMETER * value;
            else if(convertTo.equalsIgnoreCase("m") || convertTo.equalsIgnoreCase("meter") || convertTo.equalsIgnoreCase("meters"))
                convertedResult = METERS_PER_KILOMETER * value;
            else if(convertTo.equalsIgnoreCase("km") || convertTo.equalsIgnoreCase("kilometer") || convertTo.equalsIgnoreCase("kilometers"))
                convertedResult = KILOMETERS_PER_KILOMETER * value;
        }
        return convertedResult;
    }
    }

这是我的测试器:

代码语言:javascript
复制
import java.util.Scanner;

    public class UnitConverterTester
    {
        public static void main(String[] args)
        {
        Scanner in = new Scanner(System.in);
    System.out.println("Convert from: ");
    String input = in.nextLine();
    System.out.println("Convert to: ");
    String output = in.nextLine();

    System.out.println("Value: ");
    double number = in.nextDouble();
    UnitConverter one = new UnitConverter(input, output);
    double converted = one.getValue(number);
    System.out.print(number + " " + input + " " + "=" + " " + converted + " " + output);
       }
    }

抱歉太久了!谢谢你的时间和帮助!)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-27 19:45:54

表达式final double FEET_PER_INCH = (1/12);总是将FEET_PER_INCH设置为0。这是因为integer division -两个操作数都不是浮点值,因此浮点结果被丢弃.

要解决这个问题,您可以使用除法,也可以将一个数字更改为十进制。

示例:

代码语言:javascript
复制
final double FEET_PER_INCH = (double)(1/12);
// or
final double FEET_PER_INCH = 1.0/12;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20806539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档