只是遇到一些问题:
如果当前项目在提供的范围内,即在行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
答案 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;
}