2012-11-05 8 views
1

幾年前,我爲C++編寫了一個方法,現在正試圖將它用於Java。我認爲這將會像編輯該方法的第一行一樣簡單,但我錯了。使用雙重返回值和參數在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 /經過時間計算/ src目錄第7行的Java問題 語法錯誤「;」?預期的jd.java /已用時間 calc/src第3行Java問題令牌「)」上的語法錯誤,,此令牌之後預期的 jd.java /經過的時間calc/src第2行Java問題 令牌「double」 ,{expected jd.java /已用時間 calc/src line 1 Java問題令牌「double」的語法錯誤,@ 預期的jd.java /經過的時間calc/src第1行Java問題語法 令牌「double」刪除此令牌jd.java /已用時間 calc/src第1行Java問題令牌「double」的語法錯誤,無效 (jd.java /經過時間計算/ src第1行Java問題 令牌上的語法錯誤,刪除這些令牌jd.java /已用時間calc/src第1行Java 問題語法上的令牌錯誤,刪除它們令牌jd.java /已消逝 time calc/src line 4 Java問題令牌上的語法錯誤,刪除這些令牌jd.java /經過的時間calc/src第6行Java問題語法 錯誤,插入「:Expression」以完成表達式jd .java/Elapsed time calc/src line 7 Java問題語法錯誤,插入「)」以完成 SingleMemberAnnotation jd.java /經過時間calc/src第7行Java 問題語法錯誤,插入「}」以完成 MemberValueArrayInitializer jd .java /已用時間calc/src第7行Java 問題語法錯誤,插入「}」以完成 MemberValueArrayInitializer jd.java /經過時間calc/src第7行Java 問題語法錯誤,插入「枚舉標識符」即可完成 EnumHeaderName jd.java /經過時間計算/ src目錄第7行的Java問題 語法錯誤,插入 「EnumBody」 完成 CompilationUnit jd.java /經過時間計算/ src目錄第7行的Java問題

+3

問題是......? –

+0

使用http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Math.html#floor(double)進行Floor操作 –

+0

我看到的唯一問題是您必須實現方法'floor()'。或者使用Math.floor(),就像Renato Lochetti說的 – Roger

回答

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

如果可以的話,我會代表你。謝謝! – Quesofat

5

除非你有一個靜態導入java.lang.Math,您需要用「Math.floor」替換「floor」。

靜態導入,您可以參考另一個類的靜態成員資格沒有他們的名字。

進口靜態java.lang.Math中的*;