gpt4 book ai didi

java - 如何使用带有 boolean 值的 If 语句并读取用户输入

转载 作者:行者123 更新时间:2023-11-30 02:00:09 25 4
gpt4 key购买 nike

我昨天写了一篇关于这个问题的文章,但我的写作方式完全错误,所以我花了一晚上和今天早上再次尝试,但仍然无法弄清楚如何做到这一点。

我想做的是通过让用户输入两个坐标来测试我的 IsInRoom 方法,我不知道如何让 IF 语句读取用户输入,并且每次都使用 r.IsInRoom 它出现一个错误,指出“room 类型中的方法 IsInRoom(Point) 不适用于参数 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");
}
else if (r.IsInRoom(P.getY() ) ){
System.out.println((int) P.getX() + "," + (int) P.getY() + "Is in room");
else (r.IsInRoom(P.getXY() ) ) {
System.out.println ((int) P.getX() + "," + (int) P.getY() + "Is not in room");
}
}
}

最佳答案

该错误指出了问题所在。您的 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 编程的最佳实践。

关于java - 如何使用带有 boolean 值的 If 语句并读取用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53152621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com