這是一個非常奇怪的問題。在Java中不使用if語句
最終我試圖寫一個程序轉換是發生在Java源代碼,並將其轉換,使得它不使用(除其他事項外)
- 陣列
- 循環
- 用戶定義的方法
- 如果報表
這是我給自己定一個挑戰,經過我的老師告訴我,這如果不使用這些東西就不可能寫出一個程序。
我大部分的工作,包括函數內聯和數組替換,但我不能解決如何管理if語句。
在C++中我會使用標籤和gotos,也許?:,但Java不支持GOTO語句。
我的問題是這樣的: 給出一段代碼,
if(CONDITION)
{
//More code in here
}
如何可以改變它,使得它在功能上是一樣的,但是不使用,如果關鍵字。請注意,循環結構也不存在問題。
鑑於此,可以很容易地創建else和else if語句。 但是我也不確定如何使用它創建循環,因爲沒有GOTO語句和方法是不可能的。
編輯: 請注意,開關也不準,也不是遞歸(通過的事實,你不能定義用戶的方法,以及遞歸主要功能不會與每一個程序的工作排除了) ?:運算符不適用於所有情況。 AFAIK不能用?調用void函數,因爲它想要將一個值作爲其操作的一部分。
這些條件來自IB計算機科學SL要求的課程,我將HL和作爲一個班級,我們正在嘲笑包含'if'語句的SL'掌握'因素(如果事實3/15是'用戶定義的方法,帶參數和返回類型)這個挑戰是有效的失敗SL中的精通測試,同時仍然產生正確運行的程序。
答:(通過bdares)
String result = (CONDITION)?"0":"A";
try{
Integer.parseInt(result);
//Condition is true
} catch(NumberFormatException e){
//Condition is false
}
使用goto和標籤的循環仍然是一個循環,它只是使用另一種語法。爲了真正擺脫循環,你需要展開它們,即把循環中的語句順序地執行。這對於無限循環是不可能的(例如'while(1)'。) –
@JoachimPileborg不正確;他不排除使用預先編寫的庫的循環,所以他(理論上)可以寫入java.util.Loop(myObject.class,10);如果存在這樣的庫。就目前而言,他可以從Collection對象中解決一個解決方案。 – bdares
http://www.antiifcampaign。com /但是這是關於改進的OOP(通過更好的設計去除緊張,隱藏的邏輯嵌套爲IF) – earcam