我昨天写了一篇关于这个问题的帖子,但我写的方式完全错误,所以我花了一晚上和今天早上再试一次,但仍然无法理解如何去做。
我想要做的是测试我IsInRoom通过获取用户输入两个坐标法我无法弄清楚如何获得用户输入读取IF语句,每次在使用r.IsInRoom它与一个错误说“的方法出现IsInRoom(Point)在类型 room 不适用于参数 double。
我尝试了很多不同的方法来做到这一点,每次我都回到同一个地方。如果有人有任何很棒的想法,我对 Java 真的很陌生,那么如果您能给我一些有关如何正确使用这些函数的指示,那就太好了?
我已经对 If else 语句进行了更改,但出现此错误
Exception in thread "main" java.lang.NullPointerException
at CurtisBaldwin.buildingconsole.Room.isInRoom(Room.java:85)
at aCurtisBaldwin.buildingconsole.Room.main(Room.java:115)
我认为这是因为我没有将用户输入分配给 if 语句?但我不知道你是怎么做到的
import java.awt.Point;
import java.io.Reader;
import javax.swing.JOptionPane;
import java.util.Random;
public class Room {
private static int X;
private static int Y;
private static Point P;
private int[] coords;
Random ranGen;
public Room(String rstr) {
StringSplitter S = new StringSplitter(rstr, " ");
coords = S.getIntegers();
}
public Point getRandomPoint (Random ranGen) {
return new Point(coords[0] +1 + ranGen.nextInt(coords[2] - coords[0] -2), (coords[1] +1 + ranGen.nextInt(coords[3] - coords[1] -2)));
}
public String toString() {
return "Room " + coords[0] + ", " + coords[1] + ", " + coords[2] + ", " + coords[3] + " Door " + coords[4] + ", " + coords[5];
}
public boolean IsInRoom(Point xy) {
P = new Point (X,Y);
return (xy.getX() > coords[0] && xy.getX() < coords[2] && xy.getY() > coords[1] && xy.getY() < coords[3]);
}
public static void main(String[] args) {
Room r = new Room("0 0 5 5 0 2"); // create room
System.out.println(r.toString()); // and print it
String userIn = JOptionPane.showInputDialog
(null, "please enter two coordinates one X and one Y separated by a space");
JOptionPane.showMessageDialog(null, r.IsInRoom(P) + userIn);
if (r.IsInRoom(P.getX() ) ) {
System.out.println( (int) P.getX() + "," + (int) P.getY() + "Is in room");
}
}
}
森栏
侃侃尔雅
相关分类