2016-02-27 76 views
-3

我想將源代碼從C++轉換爲Java,並且除了從一個方法返回錯誤的類型以外,我不知道該如何正確格式化它。 ..試圖將C++轉換爲Java

這是C++代碼,我想轉換

int find(int x) 
{ 
    return f[x]==x ? x : f[x]=find(f[x]); 
} 

,這就是我認爲這將是在Java中,但它不會,但正常工作,因爲它說不能INT轉換爲布爾我怎麼會兌換?

public static int find(int x) 
{ 
    return f[x] == x != 0 ? x : f[x] = find(f[x]); 
} 
+2

爲什麼你改變回報,它會像平常一樣工作,不需要額外的改變 – Pragnani

+0

你不需要'!= 0',因爲'f [x] == x'已經是一個布爾值。 – dasblinkenlight

+0

發佈完整的錯誤消息和完整的代碼。 –

回答

3

f[x] == x != 0 ? x : f[x] = find(f[x])手段比較f[x]x != 0 ? x : f[x] = find(f[x]),則此而返回類型爲int產生boolean

你不必改變原有的表情,讓它,它會正常工作:f[x] == x ? x : (f[x] = find(f[x]))

+0

雖然我不斷收到此錯誤。 「無與倫比的類型:布爾型和整型 意外類型 必需:變量 找到:值」 –

1

f[x] == x結果已經是一個布爾值。所有你需要做的是

public static int find(int x) { 
    return f[x] == x ? x : (f[x] = find(f[x])); 
} 

你需要一個額外的()作業,因爲它具有較低的優先權。

+0

用這個我得到的錯誤'意外類型required:variable found:value。此外,它會無限發生# –

+0

@ElliottSmelliott好點,我已糾正並檢查它。 –