Ben*_*gel 4 java methods boolean return collision
我是java语言的新手,我很困惑为什么我在这里收到错误.这是一段很短的代码,我似乎有一个心理障碍.有什么建议?
public class Rigidbody {
public boolean checkCircleCollision(float x1,float y1,float size1,float x2,float y2,float size2){
if(Math.sqrt(((x2-x1)^2)+((y2-y1)^2))<=(size1+size2)){
return true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道我在这里缺少什么?(这可能非常明显).
old*_*inb 14
嗯,首先,你忘记了一个else条款:
public boolean checkCircleCollision(float x1, float y1, float r1,
float x2, float y2, float r2) {
if (Math.sqrt(((x2 - x1) ^ 2) + ((y2 - y1) ^ 2)) <= (r1 + r2)){
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
其他人已经指出这可以缩短如下:
public boolean checkCircleCollision(float x1, float y1, float r1,
float x2, float y2, float r2) {
return Math.sqrt(((x2 - x1) ^ 2) + ((y2 - y1) ^ 2)) <= (r1 + r2);
}
Run Code Online (Sandbox Code Playgroud)
(确保将它们用于指出那些:-)
但是,您的代码仍然是错误的.
如前所述这里,Java的^运营商是独家位或不幂.也许你想要Math.pow()?
返回第一个参数的值,该值是第二个参数的幂.
public boolean checkCircleCollision(float x1, float y1, float r1,
float x2, float y2, float r2) {
return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)) <= (r1 + r2);
}
Run Code Online (Sandbox Code Playgroud)
或者,您也可以使用Math.hypot而不是自己滚动!
返回sqrt(x ^ 2 + y ^ 2),没有中间溢出或下溢.
public boolean checkCircleCollision(float x1, float y1, float r1,
float x2, float y2, float r2) {
return Math.hypot(x2 - x1, y2 - y1) <= (r1 + r2);
}
Run Code Online (Sandbox Code Playgroud)
ale*_*lex 11
你可以让方法的身体更简单......
public class Rigidbody {
public boolean checkCircleCollision(float x1,float y1,float size1,float x2,float y2,float size2){
return Math.sqrt(((x2-x1)^2)+((y2-y1)^2))<=(size1+size2)
}
}
Run Code Online (Sandbox Code Playgroud)
结果<=始终是布尔值.
你忘记了那个else部分if.
public boolean checkCircleCollision(float x1,float y1,float size1,float x2,float y2,float size2){
if (Math.sqrt(Math.pow(x2-x1, 2)+ Math.pow(y2-y1,2)) <= (size1+size2)) {
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
哪个可以简化为:
public boolean checkCircleCollision(float x1,float y1,float size1,float x2,float y2,float size2){
return Math.sqrt(Math.pow(x2-x1, 2)+ Math.pow(y2-y1,2)) <= (size1+size2);
}
Run Code Online (Sandbox Code Playgroud)
编辑:另外,正如@veer所指出的,^2当你应该使用时,你正在使用Math.pow,因为^Java中的运算符是按位异或,而不是幂运算符.因此,请继续投票并接受他的回答,因为这是错误的主要原因.
| 归档时间: |
|
| 查看次数: |
2211 次 |
| 最近记录: |