2012-09-05 48 views
1

我運行到這個編譯器錯誤,因爲根據這個定義我非常大的查找表:Java編譯器錯誤:查找表超過65535極限

//92 X 182 array 
private static final double[][] lookUpTable = new double[][] 
{ 
    { numbers....} 
}; 

按我的理解,將其分割成一個解決方案,但要準確分割這個陣列是非常困難的。我也相信我可以將它移動到一個文件中,但我不知道是否可以通過某種方式來幫助我進行格式化,而且我不希望每秒鐘都讀取文件。 有沒有其他建議可以幫助我解決這個問題?

+0

我想你指的是'Java查找表超過65535限制'作爲編譯器錯誤。我不會理解你的問題,幾個星期前我是否遇到過同樣的罕見錯誤---我最終的解決方案是在程序開始時讀取文件中的值一次。 – Ridcully

+0

是的,它與65535問題有關。我不斷努力以清晰的方式準確描述我的問題。 – Jason

+0

我編輯了標題,使其更清晰。希望現在引起更多關注。 – Ridcully

回答

5

將表格轉換爲文件,將該文件作爲資源嵌入,在靜態初始化塊中讀取一次,並將其存儲在lookUpTable陣列中。它不會與通過聚合初始化的數組區分開,除非不存在65535的限制。存儲在一個靜態變量將幫助您避免「每秒讀取」。

就格式而言,可以將矩陣的每一行放在資源文件的單獨一行中。閱讀和維護這個文件很簡單,因爲你的數字沒有其他標記。

這是link to an answer explaining how to read a file from a resource

+0

它只是一個標準的txt文件? – Jason

+0

@Jason是的,我會把數字放在一個普通的txt文件中進行維護。 – dasblinkenlight

1

按需閱讀文件一次。

正如你有一個表/矩陣,我建議每行有一行。閱讀每一行並拆分數字並分別解析它們。

0

您可以將行保存爲一個字符串(從而減少java處理的對象的數量)作爲逗號分隔值,並在程序啓動時,拆分每一行並因此構建長表。