0

我想知道如何在 getToD 中调用 getJD() 并保持参数不变,(或临时将参数设置为 main 中的变量并将变量调用到方法中)。稍后将在 main 方法中使用扫描仪类输入参数。导入静态 java.lang.Math.*;

public class jdMethods
{
    public static double getJD(double y, double m, double d){
        if (m<=2.0){
            y--;
            m += 12.0;
        }
        double a=floor(y/100.0);
        return (365.25*(y+4716.0))+(30.6001*(m+1))+d+(2.0-a+floor(a/4.0))-1524.5;
    }

    public static double getToD(int h, int m, int s)
    {
        double a = getJD(a, a, a) + ((h-12)/24) + (m/1440) + (s/86400);
        return a;
    }
}

为清晰起见进行了编辑。

4

2 回答 2

1

所有这些参数都将是完整的,因为您正在使用doubleand int,它们不是Objects 所以它的值在传递给函数时被复制,不像Objects 对它的引用被传递给函数。

关于您的代码,未定义的变量a不会让它编译:

double a = getJD( 一个,一个,一个 ) + ((h-12)/24) + (m/1440) + (s/86400);

我不明白你在那里尝试做什么,请记住afromgetJD方法与ainto不同getToD

于 2012-11-05T16:40:42.717 回答
1

你想要做什么并不完全清楚,但我假设你只想保存你的第一个 getJD() 的结果并在你的 getToD() 中使用结果,所以我创建了一个私有 _jd 并创建了一个 setter和吸气剂。

import static java.lang.Math.*;

public class jdMethods
{

    private double _jd;
    public double getJD(){
        return _jd;
    }

    public void setJD(double y, double m, double d){
        if (m<=2.0){
            y--;
            m += 12.0;
        }
        double a=floor(y/100.0);
        _jd = (365.25*(y+4716.0))+(30.6001*(m+1))+d+(2.0-a+floor(a/4.0))-1524.5;
    }

    public double getToD(int h, int m, int s)
    {
        double a = getJD() + ((h-12)/24) + (m/1440) + (s/86400);
        return a;
    }
}

所以这就是你的称呼:

jdMethods testRun = new jdMethods();
testRun.setJD(1,2,3);
System.out.println(testRun.getToD(3, 2, 1));
于 2012-11-05T16:43:34.380 回答