2012-01-03 80 views
1

我有一個將一個變量(見下文)轉換爲String的問題,以便它可以在GUI中顯示。一些背景信息:我已經創建了一個Java GUI,它將運行一些Matlab代碼(使用MatlabProxy),並且作爲該過程的一部分,我嘗試用一​​些有用的信息(從Matlab傳回給GUI)更新GUI,以瞭解特定數據文件(用戶選擇的文件)。 MatlabProxy「getMVariable()」函數返回一個類型爲「double」的對象(在我的例子中);然而,當我嘗試施放此使用另一個java.lang.ClassCastException

String text = (String) getMVariable("testInfo.freqMax"); 

我得到的ClassCastException異常的字符串:「[d不能轉換爲java.lang.String。」我也嘗試將它轉換爲String數組(String []),但沒有運氣。我讀過一些關於使用Array.copyOf或關於數組列表的說明,但無法理解它。

回答

1

[D表示這是一個double[]。見Class#getName()

double[] foo = (double[]) getMVariable("testInfo.freqMax"); 

之後,由您決定如何處理它。

+0

這一次是什麼我需要,雖然我不得不修改它如下(根據Matlab代理維基,我不知道直到現在存在):double [] foo =((double [])getMVariable(「testInfo.freqMax」))[ 0]; – user1128248 2012-01-03 22:05:33

0

如果類型是[D那麼你有一個double[]不是doubleObject[]

你需要這樣的事情。

Object var = getMVariable("testInfo.freqMax"); 
String text; 
if (var instanceof double[]) 
    text = Arrays.toString((double[]) var); 
else 
    text = "" + var; 
0

如果您確信

getMVariable( 「testInfo.freqMax」)

收益雙,又何嘗不是用戶

getMVariable(「testInfo。 freqMax「)的toString();

0

替換該行與此代碼可以解釋這是怎麼回事:

String text = ""; 
double[] allValues = getMVariable("testInfo.freqMax"); 

for(double oneValue : allValues) { 
    System.out.println("adding the characters '" + oneValue + " ' to text"); 
    text += oneValue; 
    text += " "; 
} 

System.out.println("after we've read all values, text has become: '" + text + "'"); 

如果你不熟悉「的」結構 - 在這裏,只問:)

相關問題