1

几年前我为 C++ 编写了一个方法,现在正试图将它应用到 Java 中。我认为这就像编辑方法的第一行一样简单,但我错了。

代码如下。更新:

import static java.lang.Math.*;

public static double getJD(double y,double m,double d){
    if (m<=2.0){
        y-=1.0;
        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;
}

编辑:Eclipse 仍然被下面列出的编译器错误吓坏了。

说明资源路径位置类型标记“-”上的语法错误,删除此标记 jd.java /Elapsed time calc/src 第 7 行 Java 问题标记“;”上的语法错误,?预期的 jd.java /Elapsed time calc/src line 3 Java Problem Syntax error on token ")", ,预计在这个 token jd.java /Elapsed time calc/src line 2 Java Problem Syntax error on token ")", { 预期jd.java /Elapsed time calc/src line 1 Java Problem Syntax error on token "double", @ expected jd.java /Elapsed time calc/src line 1 Java Problem Syntax error on token "double", delete this token jd.java /Elapsed time calc/src line 1 Java Problem 令牌“double”上的语法错误,无效(jd.

4

2 回答 2

5

除非您有 java.lang.Math 的静态导入,否则您需要将“floor”替换为“Math.floor”。

静态导入允许您引用另一个类的静态成员而不限定它们的名称:

导入静态 java.lang.Math.*;

于 2012-11-05T15:11:07.447 回答
3

Java 中的所有内容都必须在一个类中。这是一个包含您的代码的完整工作类。您可能还想添加一个包声明。

import static java.lang.Math.*;

public class Utility
{
    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;
    }
}
于 2012-11-05T15:47:11.487 回答