Java 使用位于超类中的另一个方法中的参数调用方法
我想知道如何在getToD中调用getJD()并保持参数不变(或者临时将参数设置为main中的变量并将变量调用到方法)。 稍后将在main方法中使用scanner类输入参数。 导入静态java.lang.Math.*Java 使用位于超类中的另一个方法中的参数调用方法,java,math,Java,Math,我想知道如何在getToD中调用getJD()并保持参数不变(或者临时将参数设置为main中的变量并将变量调用到方法)。 稍后将在main方法中使用scanner类输入参数。 导入静态java.lang.Math.* public class jdMethods { public static double getJD(double y, double m, double d){ if (m<=2.0){ y--; m
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;
}
}
公共类方法
{
公共静态双getJD(双y、双m、双d){
如果(m由于您使用的是double
和int
,所有这些参数都是完整的,那么这些参数不是对象
s,因此在传递给函数时会复制它的值,而不像对象
s那样,对它的引用会传递给函数
关于您的代码,未定义变量a
不允许编译:
double a=getJD(
a,a,a)+((h-12)/24)+(m/1440)+(s/86400);
我不明白你想做什么,记住a
fromgetJD
方法与a
intogetToD
不清楚你想做什么,但我假设你只想保存第一次getJD()的结果,并在getToD()中使用结果,所以我制作了一个私有的jd,并为它创建了一个setter和getter
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;
}
}
你的问题现在还不太清楚,无法回答。你能详细说明一下你真正想要什么吗?你没有在getJD
函数的任何地方声明a
。你应该声明然后使用它。目前你在double a=floor(y/100.0)中声明a
之前使用它在第二种方法中,double a=getJD(a,a,a)+((h-12)/24)+(m/1440)+(s/86400);
我错了吗?是的@IrishEnigma,double a=getJD(
a,a)+((h-12)/24)+(m/1440)+(s/86400);
那些粗体的a不允许它编译。你说“保持参数不变”是什么意思?谢谢!我理解其中一些。为什么要摆脱静态
?当getJD()
声明为public
时,意味着其他类可以使用它;对吗?第18行中的PS表示“局部变量可能尚未初始化”@IrishEnigma是否静态取决于您将如何使用它,请参见:@IrishEnigma是的,如果它是公共的,则意味着其他类可以在初始化对象后访问它。@IrishEnigma您应该先调用setJD(x,y,z)以将结果保存为jd,然后调用getToD()。因此,只有在不打算更改返回值的情况下才应使用静态方法。
jdMethods testRun = new jdMethods();
testRun.setJD(1,2,3);
System.out.println(testRun.getToD(3, 2, 1));