如果当前项目在提供的范围内,则返回true

时间:2017-11-01 10:42:21

标签: java

只是遇到一些问题:

  

如果当前项目在提供的范围内,即在行row1和第2行(包括)之间以及列column1和column2(包括)之间,则返回true,否则返回false。

我把控制台放在底部。感谢。

public boolean inRange(int row1, int column1, int row2, int column2) {

    System.out.println(row1 + " " + column1 + " " + row2 + " " + column2);

    if(this.row >= row1 && this.row <= row2 && this.column >= column1 && this.column <= column2)
    { 
        System.out.println("True" + "\n");
        return true;
    }
    else if(this.row <= row1 && this.row >= row2 && this.column <= column1 && this.column >= column2)
    { 
        System.out.println("True" + "\n");
        return true;
    }

    System.out.println("False" + "\n");
    return false;
}

控制台输出:

2 4 0 0
True
3 5 2 4
True
5 4 2 5
False

3 个答案:

答案 0 :(得分:0)

我的想法是根据你的问题,如果不需要条件。

在其他情况下,如果您正在检查行和列是否超出范围。只需删除它

答案 1 :(得分:0)

  

如果当前项目在提供的范围内,即行row1和行2(包括)之间以及列column1和column2(包括)之间,则返回true,false otherwis

任务要求您检查两种状态:它是在范围内还是不在范围内。但是你正在检查三个州。如果我理解你的问题,那么这应该是工作代码:

public boolean inRange(int row1, int column1, int row2, int column2) {
    return this.row >= row1 && this.row <= row2 && this.column >= column1 && this.column <= column2;
}

答案 2 :(得分:0)

您显然正在尝试处理以升序顺序(例如,row1 <= row2)或降序顺序给出的行或列范围(例如, column2 <= column1)。

问题在于:第一次测试:

if(this.row >= row1 && this.row <= row2 && 
   this.column >= column1 && this.column <= column2)
    ...

正确检测this.row是否在升序行范围内且this.column升序列范围内。

你的第二次测试:

if(this.row <= row1 && this.row >= row2 && 
   this.column <= column1 && this.column >= column2)
        ...

正确检测this.row何时在降序行范围内且this.column降序列范围内。

但是,如果给定的行范围是升序顺序,而给定的列范围是降序顺序,该怎么办?或者,如果在第三个测试用例中,行范围降序且列范围升序

您需要一个可以处理范围排序组合的测试:

if((this.row >= row1 && this.row <= row2 ||
    this.row <= row1 && this.row >= row2)
         && 
    (this.column >= column1 && this.column <= column2 || 
     this.column <= column1 && this.column >= column2))
{ 
    System.out.println("True" + "\n");
    return true;
}