我創建了一個方法sReadFitsData類ReadFitsData。我想在任何課程中調用此方法。例如,從類TestRead。但是,我得到了一個編譯錯誤:「sReadFitsData(String)的方法未定義類型TestRead」。我試圖從另一個類調用方法,但它是未定義的
這裏是我的代碼:
ReadFitsData.java
package readFits;
import java.io.IOException;
import nom.tam.fits.BasicHDU;
import nom.tam.fits.Fits;
import nom.tam.fits.FitsException;
import nom.tam.fits.Header;
public class ReadFitsData {
public int[][][] sReadFitsData(String fitsFileName) throws IOException, FitsException {
int[][][] myData;
Fits f; // fits object
Header hdr;
Object fData;
try {
f = new Fits (fitsFileName);
} catch (FitsException fEx) {
throw new IOException ("Failed to open FITS file; "+fEx.getMessage());
}
try {
BasicHDU hdu = f.getHDU(0); // 0 is for first header, 1 is for second one.
f.close();
//hdr = hdu.getHeader();
//int size = (int) hdr.getDataSize();
fData = hdu.getData().getData(); // Object fData
} catch (FitsException fEx) {
throw new IOException ("Failed to get Data; "+fEx.getMessage());
}
if (!fData.getClass().isArray()) {
throw new IOException ("Unknown HDU Data type: " + fData.getClass().getName());// + fEx.getMessage());
}
myData = (int[][][]) fData; // cast the fData to an int[][][]
return myData;
}
}
另一類用於調用此方法:
TestRead.java
根據答案此外:
首先我做我的方法sReadFitsData爲公共靜態爲對象的獨立性。
其次我做了一個類的進口:
TestRead.java
import projectName.readFits.ReadFitsData;
而同樣的編譯錯誤仍然存在。它應該是?:
int[][][] arr = sReadFitsData(fname); // error is still there
當我把這個代碼用或不用進口它的確定:
int[][][] arr = ReadFitsData.sReadFitsData(fname); // working!
你寫「一組一維數組」是什麼意思?多擴展名FITS文件?一張桌子?在前者的情況下,你可能會使用ImageHDU。在FITS(幾乎)任何同質N-D陣列被稱爲「圖像」,因爲傳統上,它是一個圖像。但它不一定是。就FITS而言,它只是一些字節以及一些元數據(在標題中),說明如何遍歷這些字節。你究竟想要做什麼,以及你遇到什麼問題?您上面發佈的代碼不完整。 – Iguananaut
當我谷歌nom.tam.fits第二擊是一個教程如何使用它。不是很好,但總比沒有好。也許上面的觀點認爲FITS中的任何N-D數組被稱爲「圖像」將有所幫助。它也必須是Java?我不知道你在做什麼,但是使用Python可能不太麻煩。當然,這一切都取決於你的目的是什麼... – Iguananaut
「一組一維數組」我的意思是我的數據是一個三維多陣列,例如[620,90,2]。我想從fit文件讀取數據到這個數組中。 [這張圖片代表我的數據](https://s18.postimg.io/fj58kqq9z/271214az16fok0.png)。 –