有关equals
if (room_num[a][b].equals(null))
运行时报错
为什么?讲的越详细越好
饥渴啊!第一次接触equals
------解决方案--------------------if (room_num[a][b==(null))
用==试下,因为equals是用来比较字符串的,更安全的写法
if (null==(room_num[a][b))
------解决方案--------------------null 用等号 == 判断
------解决方案--------------------public class Test1 {
/**
* @param args
*/
public static void main(String[] args) {
String str = null;
try {
if (str.equals(null)) {
System.out.println("ok!");
}
} catch (Exception e) {
System.out.println("NULLPointException!");
}
try {
if (str == null) {
System.out.println("ok!");
}
} catch (Exception e) {
System.out.println("NULLPointException!");
}
}
}
結果:
NULLPointException!
ok!
------解决方案--------------------要想用equals就这样 变量.equals(“”) 要用null就用 null==变量
------解决方案--------------------用if(room_num[a][b]==null)
然后打个断点自己调试,如果还是报错说明是数组问题。然后自己看着办
------解决方案--------------------room_num[a][b] 你这个二维数组有问题啊,
数组越界。equals大部分是用来判断字符串是否一样的。就像"a"equals"a"为true。但是你要用==来判断"a"=="a"就为false了。因为不是同一个对象。判断是否为null应该用"=="这样判断。而且一般我们会把null写在前面。防止后面发生
空指针异常。
------解决方案--------------------equals比较的是对象的引用,null对象 则比较的是对象本身地址!
------解决方案--------------------我晕,没一个说到点上的。
首先应该写成 room_num[a][b] == null
可问题是
java.lang.ArrayIndexOutOfBoundsException数组越界,跟是否使用equals无关。
看你代码
Hotelmis p = new Hotelmis(3,21);
也就是共3层,每层21个房间
String[][] room_num = new String[3][21];
System.out.println("你想住几楼");
int a = sc.nextInt();
System.out.println("你想住几号房间");
int b = sc.nextInt();
当你输入a>=3 b>=21的时候,当然就越界了。
比如取room_num[3][21]得时候。。。