2012-02-23 10 views
2

がありません。は、私は次のメソッドを持つreturn文法

このメソッドの目的は、状態がカウント状態の場合、値を0から99までインクリメントし、各インクリメント後に値を返すことです。状態がカウント状態でない場合は、スーパークラスからgetValueメソッドを使用する必要があります。

+1

何か不足していますか、最初に入力したときはいつも0を返しますか? – pcalcao

+0

私は上記のメソッドの目的を追加しました。私は各インクリメント後に値を返そうとしています。 – AkshaiShah

+0

あなたはこのように数えることはできません。 'i'は関数 'getValue()'のローカル変数です。関数が終了すると終了します。クラス変数を定義する必要があります。 – kajacx

答えて

6

「理論的には」あなたは何も返さないことが一つのケースがあるので、あなたがエラーを取得する:

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

さて、それはあなたがそこに得ることはありませんことを私(あなた)には明らかであるが、ではないが、コンパイラに渡します。

これ以外にも、iが0のときにループを1回入力すると意味がなくなり、返されますが、それは明らかではないので別の話ですこの機能の目的は何ですか?

+0

さらに、 'for'ブロックは最初の反復後に停止します。リターンを呼び出すと、関数を終了します。 グローバル変数をインデクサーと同じに設定して返すように見えることも奇妙に思えます。あなたはあなたのプログラムロジックを再考したいかもしれません。あなたは何を達成しようとしていますか? –

+0

@Binyamin Sharetどのように私はそれが失敗の戻り値の型が追加されるように変更することができますか?私はそのポジションで何を返すことができるのか? – AkshaiShah

+0

@Binyamin Sharetメソッドの目的は、状態がカウント状態で、値が0から99まで増加し、各インクリメント後に値を返すことです。状態がカウント状態でない場合は、スーパークラスからgetValueメソッドを使用する必要があります。基本的に – AkshaiShah

3

ifと入力しても、forループを入力しないとどうなりますか?戻りはありません。 メソッドの最後に、のエラーの値を返すリターンを追加する必要があります。

1

コンパイラが知ることができないi<99の条件は常にtrueまたはnoです。いいえの場合、currentState == COUNTINGメソッドは何も返しません。それがエラーを起こす理由です。しかし、とにかく、なぜあなたは0を返すことができるときにforループが必要ですか?実際にcurrentStateCOUNTINGに等しい場合、メソッドは最初の繰り返しで0を返します。

関連する問題