我正在尝试创建一个代码来测试一个点是否在一个矩形的边。并且出于某种原因无论如何它都解决了错误。
所以给像一个矩形尺寸leftSide,topSide,recWidth,recHeight
我想测试它是否在ptX和ptY中,所以我有:
if(ptX >= leftSide|| ptX > (lefSide + recWidth) || ptY < topSide|| ptY < (topSid+recHeight)) return false;
else return true;
//Sugggested code
if(ptX >= leftSide && ptX < (leftSide + recWidth) && ptY > topSide && ptY < (topSid + recHeight) return true;
//Rectange values: left, top,width, height: (-2.5, 2.5, 3.5, 7.5)
你知道我碰巧搞砸了吗?具体来说,它在pt(3,3)上失败了。但它应该在第一个声明正确的情况下返回true吗?监守
答案 0 :(得分:0)
考虑到这一点, 左边表示最左边的点 Top表示最高点 (左,上)给出左上角 我认为3,3不会落入给定的矩形我调整输入请验证。 以下程序将返回正确的输出:
double ptX = 3;
double ptY = 3;
double leftSide = -2.5;
double topSide = 2.5;
double height = 3.5;
double width = 7.5;
if(ptX >= leftSide && ptX <= leftSide+width && ptY <= topSide && ptY > topSide - height) {
return true;
}
return false;
答案 1 :(得分:0)
好的,让我们稍微分解一下,让我们从......开始吧。
double leftSide = -2.5;
double recWidth = 3.5;
double topSide = 2.5;
double recHeight = 7.5;
double ptX = 3;
double ptY = 3;
System.out.println(ptX >= leftSide || ptX > (leftSide + recWidth));
System.out.println(ptX >= leftSide);
System.out.println(ptX > (leftSide + recWidth));
ptX >= leftSide
是true
,好的ptX > (leftSide + recWidth)
也是true
,好的但是,这也使得ptX >= leftSide || ptX > (leftSide + recWidth)
true
......这不是我们想要的。
此外,true || false
为true
,因此,即使其中一个先前条件为false
,比较也会返回true
...不太漂亮。
更好的解决方案是检查值是否介于这两个值之间。
所以,我们可以说......
ptX >= leftSide
,true
ptX < (leftSide + recWidth)
,false
然后我们应该使用&&
(因为它们都需要true
为true
)
ptX >= leftSide && ptX < (leftSide + recWidth)
返回`false!这是我们真正追求的答案!
现在,基本上,我们需要对y
位置执行相同操作,然后将&&
这两个结果放在一起,因为除非两个true
,否则它不在 JSONObject jsonObject = jsonArray.getJSONObject(L);
year[L] = jsonObject.getString("year");
month[L] = jsonObject.getString("month");
day[L] = jsonObject.getString("day");
StartTime[L] = jsonObject.getString("StartTime");
Endtime[L] = jsonObject.getString("Endtime");
Hours[L] = jsonObject.getString("Hours");
final ContentValues event = new ContentValues();
event.put(CalendarContract.Events.CALENDAR_ID, 1);
event.put(CalendarContract.Events.TITLE, "WORKING SCHEDULE OF THE WEEK");
event.put(CalendarContract.Events.DESCRIPTION, "selva");
event.put(CalendarContract.Events.EVENT_LOCATION, "chennai");
的范围内矩形