2012-02-23 211 views
2

我有以下方法:缺少return語句方法

public int getValue() 
{ 
    if (currentState == COUNTING) 
    { 
    for (int i = 0; i < 99; i++) 
    { 
     value = i; 
     return value; 
    } 

    } 
    else 
    return super.getValue(); 
} 

我收到以下錯誤:缺少return語句。

該方法的目的是,如果狀態是計數狀態,則該值應該從0增加到99,並在每次增量後返回該值。如果狀態不是計數狀態,它應該使用超類的getValue方法。

+1

我是否錯過了一些東西,或者當你輸入第一個時,你會總是返回0嗎? – pcalcao 2012-02-23 18:48:09

+0

我已經在方法的目的之上添加了。我試圖在每次遞增後返回值。 – AkshaiShah 2012-02-23 18:52:23

+0

你不能這樣計算,'i'是函數'getValue()'的局部變量,它在函數結束時死掉,你需要定義一些類變量。 – kajacx 2012-02-23 20:02:32

回答

6

因爲有一種情況是「理論上」你可能不返回任何你得到的錯誤:

if (currentState == COUNTING) 
    { 
    for (int i = 0; i < 99; i++) 
    { 
     value = i; 
     return value; 
    } 
// right here 
} 

現在,很明顯,我(和你),你不會得到那裏,但不到編譯器。

除此之外,循環內的返回沒有任何意義,因爲您要輸入一次,當i爲零,並返回它,但這是另一個故事,我不能幫助,因爲它不明確對我來說這個功能的目的是什麼。

+0

此外,'for'塊將在第一次迭代後停止 - 當您調用return時,它將退出該函數。 你似乎很奇怪,你似乎在將它設置爲等於索引器之後返回一個全局變量。你可能想重新考慮你的程序邏輯;你想達到什麼目的? – 2012-02-23 18:47:59

+0

@Binyamin Sharet我怎麼能改變它,所以失敗返回類型被添加?我的意思是我可以在那個位置返回什麼? – AkshaiShah 2012-02-23 18:48:18

+0

@Binyamin Sharet方法的目的是,如果狀態是計數狀態,則值應該從0增加到99,並在每次增加後返回值。如果狀態不是計數狀態,它應該使用超類的getValue方法。 – AkshaiShah 2012-02-23 18:49:11

3

如果輸入if但從不輸入for循環?不會有任何回報。 您必須在方法末尾添加返回值,例如可能返回失敗值值。

1

編譯器無法知道是i<99條件總是爲真或不。如果不是,則在currentState == COUNTING方法不會返回任何內容的情況下。這就是爲什麼你會得到錯誤。但無論如何,當你可以返回0時,爲什麼你需要for循環?實際上,在currentState等於COUNTING的情況下,您的方法將在第一次迭代中返回0。