2012-09-24 43 views
1

我是java的初學者,正在寫一個使用數組的堆類。非常基本的java方法

所以我在這個類中的方法被稱爲流行

public int Pop(){ 
    if (current_size >0) 
    { // do something 
     return ele; 
    } 
    // return nothing <-- ths is where error is 
    } 

,因爲我已經返回類型爲int ..類總是期待返回的東西。 我應該如何處理這種情況,如果條件是真的,方法將返回一些東西,否則它不會返回任何東西? 感謝

+0

有一個.... *很多*錯在這裏。首先,*其中*是你的數組?你不用這種方法。其次,當堆棧爲空時,很難決定返回什麼,因爲任何基本int都可能是堆棧中的有效條目。第三,我沒有看到任何可以減小堆棧大小或調整堆棧末尾指向的地方。 – Makoto

回答

7

你必須始終有返回值(除非你的方法是void)或拋出異常。你可以試試這個:

public int pop() { 
    if (current_size > 0) 
     return ele; 
    throw new EmptyStackException(); 
} 
3

不知道你想要的行爲是什麼,很難告訴你,但我可以提供一些建議。

  1. 如果你想真正地返回任何結果,你應該改變的返回類型是Integer包裝類,而不是int原始。這樣你可以返回null,這將是沒有什麼。
  2. 如果這是一個特殊的情況下,也許你想throwException

    if (evaluateSomething()) { 
        // do something in response... 
    } else { 
        throw new RuntimeException("You can't do that!"); 
    } 
    
2

當堆棧是空的你也可以拋出一個異常,或者你可以返回一個特殊INT像-1,如果你的籌碼從來沒有負數。

throw new StackIsEmptyException(); 
1

您需要有一個return語句或爲所有可能的退出點拋出異常。

1

除非你的方法是void,否則你必須返回一個變量或拋出/捕獲一個異常。像這樣的事情應該做的;

public int pop() 
{ 
    if (current_size > 0) 
     return ele;     //return variable 
    throw new EmptyStackException(); //throw new exception 
}