2015-02-24 207 views
-5

我有一個「禁止」玩家的類,但是如果他的名字在一個字符串數組中,我不希望這個玩家被禁止。我可以遍歷數組的長度並使用布爾值,但是必須有更簡單的方法嗎?我看到的東西只是說如果符合條件,把return;,它會停止所有代碼運行下面,如果語句。如何停止運行某些代碼?

編輯:感謝您的幫助!即使你是一個低估了這一點的人,你至少有4人,但你們都很有幫助。

+1

是的,你是對的,if..else語句是條件塊,它執行的典型條件 – Vihar 2015-02-24 04:53:42

+1

叫我老學校,我被教導有一個入口和所有函數/方法的出口點,但把'return'除此之外,任何其他方法的結束都是一個壞主意,因爲這很容易讓人們錯過它,並且誤解了邏輯想要達到的目標。 – MadProgrammer 2015-02-24 04:57:31

+1

給我打電話給年紀較大的學校,但是編譯器將具有多個返回語句的方法轉換爲單一退出程序,* ergo *它們在語義上相同,* ergo *不需要通過額外的循環跳轉以避免多重返回語句。我從來沒有見過這個神祕的程序員,他們無法理解他們,也沒有遇到過三級運算符優先級的人。一直以來,有些程序員一定對他們的同事感到amazing contem不安。 – EJP 2015-02-24 07:52:37

回答

1

您可以創建一個方法來檢查玩家是否在字符串數組中,並且如果您在void方法中使用return方法將會結束。

例如

public void returnUsage(int n) 
{ 
    if(n==1) 
    { 
     return; 
    } 
    System.out.println("n doesn't equal 1."); 
} 

但它很可能是最好使用ifelse跳過你不想,如果條件不滿足運行代碼。 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html

+0

請用你的if語句使用大括號;即'if(n == 1){return; }' – 2015-02-24 05:07:15

0

數組是該任務的錯誤數據結構。將玩家添加到Set<> allowedPlayers = new HashSet<String>(),然後使用if(allowedPlayers.contains(name)) return;根據玩家的姓名是否在設置中來有條件地退出該方法。當名稱數量變大時,該集合將保持快速。使用陣列掃描時,陣列很大時陣列會很慢。

+0

更簡單的是隻有一個禁止玩家名字的集合。 – dnault 2015-02-24 05:01:08

+0

@dnault哇是什麼錯過!衛生署!謝謝 – simbo1905 2015-02-24 05:10:58

+0

'Set'將保持快速'完全取決於您使用哪種實現。 – EJP 2015-02-24 09:04:38