2017-10-30 7 views
0

私はJavaプログラミングでかなり新しいですが、私はこのパッケージを完成させようとしていますが、私は、行範囲0〜3、列1〜2を持つ場合、この範囲のメソッドinRangeを呼び出すDataEntryオブジェクトが行= 2、列= 1の場合、範囲内にあるオブジェクトを見つける必要があります。行(2)が0から3の間で、列(1)が(1と2)の間にあるのでtrueを返します。私はさまざまなコードを試しました。現在のコードは、私が最良の選択だと思ったものですが、テストするとエラーが出ます。私はDataEntryエントリ=新しいDataEntry(2,4,8.88)がある場合; (entry.inRange(3、5、2、4)の場合はtrueを返します。entry.inRange(5、4、2、5)の場合はtrueを返します。 )もしあれば(entry.inRange(0、0、2、3)特定の値が範囲内にあるかどうかを調べるJava

private int row, column; 
private double value; 

public DataEntry(int r, int c, double val) { 
    setRow(r); 
    setColumn(c); 
    value = val; 
} 

public void setRow(int r) { 
    row = Math.max(0, r); 
} 

public void setColumn(int c) { 
    column = Math.max(0, c); 
} 

public void setValue(double val) { 
    value = val; 
} 

public int getRow() { 
    return row; 
} 

public int getColumn() { 
    return column; 
} 

public double getValue() { 
    return value; 
} 

//DO NOT MODIFY ANY CODE ABOVE THIS COMMENT 

/** 
* @param row1 
* @param column1 
* @param row2 
* @param column2 
* @return true if the current item is in the range provided 
* i.e., between rows row1 and row 2 (inclusive) and between 
* columns column1 and column2 (inclusive), false otherwise 
*/ 
public boolean inRange(int row1, int column1, int row2, int column2) { 
if (this.row <row1){ 
return false; 
} 
if (this.row>row2) 
return false; 
} 
if (this.column <column1) { 
return false; 
} 
if (this.column> column2){ 
    return false; 
} 
     return true; 

    //this is my code 
} 

}

+3

どのようなエラーが表示されますか? – Berger

+0

私はjava.lang.AssertionErrorを取得します –

+1

あなたの質問に例外のスタックトレースを追加してください。 – Berger

答えて

1

あなたはあなたのコードに明確さの多くを追加(およびデバッグにそれを容易にする)ことができるためにはfalseを返しますわずかに異なる方向から問題にアプローチ。このような

何かがあなたが問題を追跡に役立つはずです。

public boolean inRange(int row1, int column1, int row2, int column2) { 
    // Rows first. 
    if (row < row1) { 
     return false; 
    } 
    if (row > row2) { 
     return false; 
    } 
    // Then columns. 
    if (column < column1) { 
     return false; 
    } 
    if (column > column2) { 
     return false; 
    } 
    // Everything is in range. 
    return true; 
} 

ロジックを逆にして、探しているケースに対してtrueの複雑なブール式を作成する代わりに、境界外になったときにfalseを返すことで不良状態を解消しています。

NB:私が使った比較は正しいかもしれませんが、少なくとも間違っていることをより簡単に解決できるはずです。

関連する問題