为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用带有布尔值的 If 语句并读取用户输入

如何使用带有布尔值的 If 语句并读取用户输入

白猪掌柜的 2021-12-30 17:33:50
我昨天写了一篇关于这个问题的帖子,但我写的方式完全错误,所以我花了一晚上和今天早上再试一次,但仍然无法理解如何去做。我想要做的是测试我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");        }    } }
查看完整描述

2 回答

?
森栏

TA贡献1810条经验 获得超5个赞

错误说明出了什么问题。你的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:方法和变量通常是驼峰式的,所以IsInRoom应该是isInRoom。这不是必需的,但它是 Java 编程的最佳实践。


查看完整回答
反对 回复 2021-12-30
?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

你犯了这个错误

P.getX()P.getY()返回double但在IsInRoom争论中你期待Point:)

另一点是,直到 Java 11,我们才像您那样支持 else 块中的参数,例如:

else (r.IsInRoom(P.getXY() ) )


查看完整回答
反对 回复 2021-12-30
  • 2 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信