日期:2014-05-20  浏览次数:20690 次

有关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]得时候。。。