使用if语句转换单位?

时间:2014-07-02 02:23:13

标签: java

我必须编写一个程序来转换线性单位in,ft,mi,mm,cm,m,km。我知道有更简单,更好的方法来做到这一点。我想我们只是试图完全理解if if else语句。但这是我到目前为止所拥有的。我只想弄清楚自己是否走在正确的轨道上。我试图写出一些伪代码,但它看起来似乎很多,所以我发现它有点压倒性的。接下来,我将添加一个方法,将form in或mm转换为用户选择的任何内容。

当我测试程序时,我得到了这个:UnitConversion @ 76c5a2f7(编辑:这个问题已得到修复) 好的我做了建议的更改,并允许程序的第一部分正常运行。我现在已经添加了我的第二种方法,从/ mm转换到其他测量..我遇到了问题,但我想出来了。

这是我的主要方法;

public class LinearConversion 
{
    public static void main(String[] args)
    {
        UnitConversion newConvert = new UnitConversion("km", "m", 100);

        System.out.println(newConvert);
    }
}

有什么建议吗?我对这类计划缺少什么或不理解?

    public class UnitConversion 
{

    private String input;
    private String output;
    private double value;
    private double temp;

    private double in, ft, mi, mm, cm, m, km;
    private final double inch_feet = 12;
    private final double inch_miles = 63360;


    private final double inch_millimeters = 25.4;
    private final double inch_centimeters = 2.54;
    private final double inch_meters = 0.0254;
    private final double inch_kilometers = 0.0000254;

    private final double millimeters_inch = 0.0393701;
    private final double millimeters_feet = 0.00328084;
    private final double millimeters_miles = 0.000000622;

    private final double millimeter_centimeters = 10;
    private final double millimeter_meters = 1000;
    private final double millimeter_kilometers = 1000000;

    public UnitConversion(String in, String out, double val)
    {
        input = in;
        output = out;
        value = val;
    }

    public String toString()
    {
        if (input.equals("mi"))
        {
            in = value * inch_miles; 
            input = "in";
        }

        else if (input.equals("ft"))
        {
            in = value * inch_feet;
            input = "in";
        }

        else
        {
            in = value;
            input = "in";
        }

        if (input.equals("km"))
        {
            mm = value * millimeter_kilometers;
            input = "mm";
        }

        else if (input.equals("m"))
        {
            mm = value * millimeter_meters;
            input = "mm";
        }

        else if (input.equals("cm"))
        {
            mm = value * millimeter_centimeters;
            input = "mm";
        }

        else
        {
            mm = value;
            input = "mm";
        }

        return value + input + " " + output;
    }

     public double getUnit()
    {
        if (input.equals("in"))
        {
            if (output.equals("ft"))
            {
                ft = in * inch_feet;
                System.out.println(ft + "ft");
            }
            else if (output.equals("mi"))
            {
                mi = in * inch_miles;
                System.out.println(mi + "mi");
            }
            else if (output.equals("mm"))
            {
                mm = in * inch_millimeters;
                System.out.println(mm + "mm");
            }
            else if (output.equals("cm"))
            {
                cm = in * inch_centimeters;
                System.out.println(cm + "cm");
            }
            else if (output.equals("m"))
            {
                m = in * inch_meters;
                System.out.println(m + "m");
            }
            else if (output.equals("km"))
            {
                km = in * inch_kilometers;
                System.out.println(km + "km");
            }  
            else 
            {
                System.out.println(in + "in");
            }  
        }
        else
        {
            if (output.equals("cm"))
            {
                cm = mm * millimeter_centimeters;
                System.out.println(cm + "cm");
            }
            else if (output.equals("m"))
            {
                m = mm * millimeter_meters;
                System.out.println(m + "m");
            }
            else if (output.equals("km"))
            {
                km = mm * millimeter_kilometers;
                System.out.println(km + "km");
            }
            else if (output.equals("in"))
            {
                in = mm * millimeters_inch;
                System.out.println(in + "in");
            }
            else if (output.equals("ft"))
            {
                ft = mm * millimeters_feet;
                System.out.println(ft + "ft");
            }
            else if (output.equals("mi"))
            {
                mi = mm * millimeters_miles;
                System.out.println(mi + "mi");
            }
            else 
            {
                System.out.println(mm + "mm");
            }
        }
}

2 个答案:

答案 0 :(得分:3)

基本上,您需要/想要为String提供System.out.println参数才能显示它。

因此,当您使用System.out.println并使用Object(不是String)作为参数时,Java实际上会输出toString方法的结果对象

如果您没有重写Object班级'使用toString的实现:这是为您提供当前输出的内容:UnitConversion@76c5a2f7

要详细了解此默认toString实施如何生成String,您可以参考the javadoc entry for Object#toString

答案 1 :(得分:1)

根据您的输出和您提供的代码,是的!将String getInput()重命名为String toString(),您当前的main()将有效,或者更改您当前的main()

System.out.println(newConvert.getInput()); // <-- added .getInput()