Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将在一种方法中计算的新值用于另一种方法?_Java - Fatal编程技术网

Java 如何将在一种方法中计算的新值用于另一种方法?

Java 如何将在一种方法中计算的新值用于另一种方法?,java,Java,我已经更新了我的代码。我仍然有问题。我确信有更好/更简单的方法来编写这段代码,但我只学了几周编程,目的是使用if/else if/else语句。我想做的是取一个值和度量单位,然后把它转换成另一个度量单位 第一种方法:getSmallestUnit应该将任何输入转换为最小单位英寸或毫米 第二种方法;假设getNewUnitConversion然后获取新值并将其转换为正确的单位 在此之前,我只需要使用1或2个变量。我试图返回变量,以便在方法之外使用它们,但它似乎无法从mm/in计算到所需的单位 我不

我已经更新了我的代码。我仍然有问题。我确信有更好/更简单的方法来编写这段代码,但我只学了几周编程,目的是使用if/else if/else语句。我想做的是取一个值和度量单位,然后把它转换成另一个度量单位

第一种方法:getSmallestUnit应该将任何输入转换为最小单位英寸或毫米

第二种方法;假设getNewUnitConversion然后获取新值并将其转换为正确的单位

在此之前,我只需要使用1或2个变量。我试图返回变量,以便在方法之外使用它们,但它似乎无法从mm/in计算到所需的单位

我不知道从这里往哪里看

 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;
    }

    //Convert units to convert from (input) to its smallest form either in or mm
    public double getSmallestUnit()
    {
        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 in + mm;
    }

    //Convert in or mm to desired unit of measurement
     public double getNewUnitConversion()
    {
        //convert from english standard
        if (input.equals("in"))
        {
            if (output.equals("ft"))
            {
                ft = in * inch_feet;
            }
            else if (output.equals("mi"))
            {
                mi = in * inch_miles;
            }
            else if (output.equals("mm"))
            {
                mm = in * inch_millimeters;
            }
            else if (output.equals("cm"))
            {
                cm = in * inch_centimeters;
            }
            else if (output.equals("m"))
            {
                m = in * inch_meters;
            }
            else if (output.equals("km"))
            {
                km = in * inch_kilometers;
            }  
            else if (output.equals("in"))
            {
            }  
            else 
            {
                System.out.println("Error: Must enter linear unit of measure in, ft, mi, mm, cm, m, or km");
            }
        }
        //convert from metric
        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 if (output.equals("mm"))
            {
                System.out.println(mm + "mm");
            }
            else 
            {
                System.out.println("Error: Must enter linear unit of measure in, ft, mi, mm, cm, m, or km");
            }
        }
        return in + ft + mi + mm + cm + m + km;
    }
}
这是我的主要任务

import java.util.Scanner;

public class LinearConversion 
{
    //==================MAIN================
    public static void main(String[] args)
    {
        Scanner newConversion = new Scanner(System.in);
        System.out.print("Enter a linear unit to convert from: ");
        String fromUnit = newConversion.next();

        System.out.print("Enter a linear unit to convert to: ");
        String toUnit = newConversion.next();

        System.out.print("Enter a value: ");
        double value = newConversion.nextDouble();

        UnitConversion timsConversion = new UnitConversion(fromUnit, toUnit, value);

        timsConversion.getSmallestUnit();

        double conversion = timsConversion.getNewUnitConversion();
        System.out.println(conversion);

    }
}

toString()
中的内容已关闭
toString()
返回对象的字符串表示形式。你应该采用这种逻辑,用另一种方法。对于
toString()
大多数IDE都可以自动生成它们。例如,在eclipse中,您可以转到
Source>generateTostring()…

在UnitConversion构造函数中,您可以执行以下操作:

public UnitConversion(String in, String out, double val)
{
    input  = in;
    output = out;
    value  = val;
}
您可能需要签出关键字。它指的是当前对象

例如:

public UnitConversion(String input, String output, double value)
{
    this.input  = input;
    this.output = output;
    this.value  = value;
}

如果要使用在方法中计算的变量,则应返回该变量。去
返回0没有多大意义

您遇到了哪部分问题?只需
返回
getUnit()中的计算值
只需从一个方法返回值,并通过调用您的方法(在本例中是您的toString()方法)在另一个方法(getUnit()中检索该值。在
toString()中运行的逻辑
已完全关闭并将数据弄乱。此外,Java约定是
toString()
返回一个表示对象的字符串-它不应该进行任何计算!除此之外:你有太多的参数,你的方法太长,你也在
getUnit()
中使用
in
(你在
toString()
中弄糟了)而不是简单地使用
value
一个好的建议是尝试并遵循SRP(单一责任原则)这意味着在每种方法中,你只能做一件事!更好的建议是阅读Robert C.Martin的“干净代码”: