2016-08-13 5 views
0

私はこの関数をテストしていますが、trueを返すことは望ましくありません。ここにある:単純な関数が過去のreturn文を返す

arraylistに要素が含まれているかどうかをチェックするだけで、非常に簡単です。

ただし、すべての値が正しい場合でも、この関数はfalseを返します。私は簡単にデバッグのために、以下にそれをリファクタリングしているが、結果はさらに奇妙です:ここでは

public boolean linesExist(){ 
    if (this.lines != null) { 
     boolean linesExist = !this.lines.isEmpty(); 
     return linesExist; 
    } else { 
     return false; 
    } 
} 

enter image description here http://i.imgur.com/Mr84LGG.gif

が機能を通じて行ずつ行くGIFで、下は、関連を持っています値(実行中にコードの隣に表示されます)。あなたが見ることができるように、それは最初のifに入り、 "trueを返す"とヒットし、 "false false"をヒットするためにelseに入ります。

誰かが何をすべきか提案があれば、それは素晴らしいだろう。

EDIT:GIFを投稿するのを忘れました、申し訳ありません。 http://i.imgur.com/Mr84LGG.gif

[FINAL EDIT]:問題は、ビルドをきれいにIDEを再起動し、すべてが

+1

これはどのようにテストしていますか?私たちがまだ助けてくれるほど十分なコードと情報を表示しているかどうかはわかりません。 –

+0

メソッドを呼び出すたびに 'lines'は空ではありませんか? – ByeBye

+0

'lines'を初期化し、' linesExist() 'を呼び出すコードを表示してください。 –

答えて

3

時には論理反転は/理解を、より読みやすいものになります動作するはずです、IDEとありました。

boolean linesExist() { 
    if (lines == null) return false; 
    if (lines.isEmpty()) return false; 
    return true; 
} 

多分役立つかもしれません。

+1

私は、著者が持っている問題を解決するとは思わない... – ByeBye

+0

私はこれがおそらく実際に質問に答えないことに同意します。しかし、論理はif条件を否定することなくずっと簡単です。 –

+1

それかもしれません。インダイレクションによって:おそらく、彼は自分のコードの「内在的な」複雑さによってちょうど「盲目的」であるかもしれません。多分、これは彼が実際の根底にある問題に遭遇するのに役立ちます。 – GhostCat

1

これはコードの問題ではなく、 'if'ステートメントと 'else'ステートメントの両方を実行することはできません。プロジェクトを再構築してみてください。

+0

ええ、私はこれを奇妙なものにしました。しかし、問題は私のコードのどこかにありました。どうやら、変数を設定するのではなく、NaN値をチェックするためにFloat.NaNを使用することになっているだけです。 – swerly

+0

@ agreely、私はどのようにコードの変更がこれを修正したかわかりませんが、私は 'if'と 'else'ステートメントは両方とも '結合'されている限りエラーでも実行できないと信じています。とにかく、道を得てうれしいです。 – Addis

+0

私はそれがAndroidスタジオの問題で、間違った行番号を表示して表示していたと思います。 – swerly

関連する問題