昨天我写了一篇关于这个问题的文章,但是我写了这么整整一整天的东西完全是错误的。
我想做的是通过让用户输入两个坐标来测试我的IsInRoom
方法,我无法弄清楚如何让IF语句读取用户输入,并且每次都使用{{1} }出现错误,提示“类型room中的方法r.IsInRoom
不适用于double参数。
我尝试了许多不同的方法来完成此操作,每次我最终回到同一位置时。如果有人对Java真正陌生,那么如果您能给我一些有关如何正确使用这些功能的指示,那将是很棒的吗?
我已经对If else语句进行了更改,但是出现了此错误
IsInRoom(Point)
我认为这是因为我没有将用户输入分配给if语句吗?但我不确定你怎么做
Exception in thread "main" java.lang.NullPointerException
at CurtisBaldwin.buildingconsole.Room.isInRoom(Room.java:85)
at aCurtisBaldwin.buildingconsole.Room.main(Room.java:115)
答案 0 :(得分:1)
您犯了这个错误
P.getX()
和P.getY()
返回double
,但在IsInRoom
参数中,您期望Point
:)
另一点是,直到java 11,我们才像其他人那样支持else块中的参数,例如:
else (r.IsInRoom(P.getXY() ) )
答案 1 :(得分:1)
错误指出了问题所在。您的isInRoom
方法需要一个Point
参数,但是在您的if(r.isInRoom(P.getX()))
或if(r.isInRoom(P.getY()))
中,getX()
和getY()
是double
类型,这就是您得到错误的原因。
只需将if-else的构造更改为此:
if(r.isInRoom(P)){
System.out.println((int)P.getX() + "," + (int)P.getY() + "Is in room");
} else{
System.out.println((int)P.getX() + "," + (int)P.getY() + "Is not in room");
}
足够修复它。
PS:方法和变量通常在camelCase中,因此IsInRoom
应该是isInRoom
。这不是必需的,但这是Java编程的最佳实践。