我想寫一個條件語句,根據變量是否是一個int或double,即Java的標識整數和雙打
if (x is a double)
do stuff
else if(x is an int)
do stuff
else
do stuff
我知道這可能不是一個好主意,但它只是我現在的選擇。這可能嗎?
我想寫一個條件語句,根據變量是否是一個int或double,即Java的標識整數和雙打
if (x is a double)
do stuff
else if(x is an int)
do stuff
else
do stuff
我知道這可能不是一個好主意,但它只是我現在的選擇。這可能嗎?
我不知道X如何能是一個int或沒有你知道在編譯的時候了一倍,但
void dostuff(int x) {
do stuff...
}
void dostuff(double x) {
do stuff...
}
然後
dostuff(x)
將調用適當的方法。
編輯補充:我不認爲這個問題真的是你想要的,根據你對原始問題的評論。我會發布對其他問題的評論,試圖爲yoru真正的問題提供一些幫助。
正如比爾蜥蜴說,你就知道在編譯時什麼類型的原始是:
public void foo(int x, double y){...}
在另一方面,如果你把你的類型的另一個對象的內部,像
Vector v = new Vector(); v.add((int)1); v.add((double)1.0));
那麼你真的處理的不是物體的對象。每個基本元件具有一個對應的類:
您可以使用instanceof關鍵字來確定你正在處理的是什麼類型(你可以用任何類來做到這一點):
if(x instanceof Double) { doDoubleThing(); } else if(x instanceof Integer) { doIntegerThing(); } // and so on
如果您有能力使用兩種方法,那麼atk寫的是有效的。如果這不是一個選項,或者你不想這樣做(個人認爲它可能更具可讀性並且不需要重複一個方法,只需執行if-else分支,取決於你的代碼),那麼可以使用反射:
Class intClass = Integer.class;
Class doubleClass = Double.class;
if intClass.isInstance(foo)
bar();
else if doubleClass.isInstance(foo)
spam();
else
eggs();
這可能不一定是最好的解決方案。只是覺得你應該知道這件事。
我猜你試圖檢查一個數字是否有小數部分。
double n; if(n-floor(n)>0) it has a decimal part else it's an integer
你知道在編譯時什麼類型的基本變量是在Java中。在什麼情況下您需要使用條件語句進行檢查?你是從一個字符串或其他東西轉換用戶輸入? – 2010-10-08 02:09:19
我也想弄明白這個情況。這個問題還有更多嗎? – birryree 2010-10-08 02:11:33
那麼它的這個:http://stackoverflow.com/questions/3886818/java-array-manipulation我只是有問題時,詮釋比例因子是0.5。所以我想,如果我有不同的指示,取決於它是否加倍,我可能會消除這個問題。它是最後一個希望類型的東西。我不知道還有什麼要做。 – Snowman 2010-10-08 02:13:48