-1

私は次のコードを持っています:

/** Width of each brick in pixels */
    private static final int BRICK_WIDTH = 11; 

/** Width of each brick in pixels */
    private static final int BRICK_HEIGHT = 12;

/** Number of bricks in the base of the pyramid */
    private static final int BRICKS_IN_BASE = 14;

public void run () {

    int LowerLeftSide;
    if (BRICK_WIDTH / 2 == 0)
    {
         LowerLeftSide = ((getWidth()/2) - (BRICK_WIDTH*(BRICKS_IN_BASE/2)));
    }else 
         LowerLeftSide = ((getWidth()/2) - (BRICK_WIDTH*(BRICKS_IN_BASE/2-1)));

Eclipse は全体ifをデッド コードとしてマークします。run メソッドの最初で値を初期化します。

ありがとう。

4

7 に答える 7

16

BRICK_WIDTHは定数のように見えるためBRICK_WIDTH/2、コンパイル時に認識され、日食はどのパスが使用されるかを認識しているため、もう一方はデッドコードです。

于 2013-02-14T08:11:01.520 に答える
4

大文字を使用しBRICK_WIDTHているので、定数 ( final) として定義したと思いますか? 次に、BRICK_WIDTH == 0(またはそれが であると仮定すると 1 およびおそらく -1 int)でない限り、 BRICK_WIDTH / 20 になることはありません。したがって、if の下のコードに到達することはありません。

于 2013-02-14T08:11:57.053 に答える
0

編集:私の答えは完全に間違っています。

の値はBRICK_WIDTH? ゼロの場合、その井戸は常に実行され、else.

于 2013-02-14T08:10:27.430 に答える
0

@oalsingあなたは正しいですが、BRICK_WIDTH = 1の場合、値がハードコーディングされているため、eclipseはelseブロックがデッドコードであり、同一の式を比較していると言います。

于 2013-02-14T08:54:03.777 に答える
-1
{   
int LowerLeftSide;
if ((BRICK_WIDTH / 2) == 0) {
     LowerLeftSide = ((getWidth()/2) - (BRICK_WIDTH*(BRICKS_IN_BASE/2)));
} else {
     LowerLeftSide = ((getWidth()/2) - (BRICK_WIDTH*(BRICKS_IN_BASE/2-1)));
}
于 2013-02-14T08:09:52.513 に答える
-1

入力するのは、BRICK_WIDTH = 1 のときだけです (BRICK_WIDTH は正の整数だと思います)。

値 / 2 は決して 0 ではありませんが、Java では 1/2 = 0 です。これは、整数の処理方法によるものです。

編集:なぜそれがデッドコードだと言っているのかわかりませんが、これは一般的な考えです。

于 2013-02-14T08:13:49.867 に答える