if (room_num[a][b].equals(null))
运行时报错
为什么?讲的越详细越好
饥渴啊!第一次接触equals

解决方案 »

  1.   

    NullPointerException??因为room_num[a][b]是null
      

  2.   

    java.lang.ArrayIndexOutOfBoundsException
      

  3.   

    if (room_num[a][b==(null))
    用==试下,因为equals是用来比较字符串的,更安全的写法
    if (null==(room_num[a][b))
      

  4.   

    null 用等号 == 判断
      

  5.   

    package hanjia;
    import java.util.Scanner;
    public class Hotelmis {
    int floor;                                       //楼层
    int number;                                      //相同楼层房间数
    String[][] room_num = new String[floor][number]; //房间号
    public int getFloor() {
    return floor;
    }
    public void setFloor(int floor) {
    this.floor = floor;                           //
    }
    public int getNumber() {
    return number;
    }
    public void setNumber(int number) {
    this.number = number;
    }
    public Hotelmis(int floor,int number){
    super();
    this.floor = floor;
    this.number = number;
    }
    public Hotelmis(){
    floor = 5;    
    number = 23;
    }
    //每次写get  set和构造方法,感觉很麻烦,怎么封装一个类,直接用 。错误的理解请老师纠正
    //查找
    public void find(){
    for(int i = 0; i < floor; i++){
    for(int j = 0;j < number; j++){
    if (room_num[i][j] == null){
    System.out.print(i);
    System.out.println(j + "可以入住");
    }else{
    System.out.println("姓名为" + room_num[i][j] + "的客人入住" + i);
    System.out.println( j + "房间");
    }
    }
    }

    }
    public void inHotel(){
    Scanner sc = new Scanner(System.in);
    System.out.println("你想住几楼");
    int a = sc.nextInt();
    System.out.println("你想住几号房间");
    int b = sc.nextInt();
    for(int i = 0; i < floor; i++){
    for(int j = 0;j < number; j++){
    if (room_num[a][b] == null){
    System.out.println("可以入住");
    System.out.println("请输入客户姓名:");
    String name = sc.next();
    room_num[a][b] = name;
    }else{
    System.out.println("此房间有人");
    }
    }
    }
    }
    public void outHotel(){
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入要退的房间号:");
    int c = sc.nextInt();
    int d = sc.nextInt();
    for(int i = 0; i < floor; i++){
    for(int j = 0;j < number; j++){
    room_num[c][d] = null;
    }
    }
    }
    public static void main(String args[]){
    Hotelmis p = new Hotelmis(3,21);
    Scanner sc =new Scanner(System.in);
    System.out.println("请选择服务:");
    String h=sc.next();
    if(h.equals("入住")){
    p.inHotel();
    }
    if(h.equals("退房")){
    p.outHotel();
    }
    if(h.equals("查询")){
    p.find();
    }
    }
    }
    你们看下怎么错了,谢谢!
      

  6.   

    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!
      

  7.   

    要想用equals就这样   变量.equals(“”)    要用null就用  null==变量
      

  8.   

    用if(room_num[a][b]==null)
    然后打个断点自己调试,如果还是报错说明是数组问题。然后自己看着办
      

  9.   

    room_num[a][b] 你这个二维数组有问题啊,数组越界。equals大部分是用来判断字符串是否一样的。就像"a"equals"a"为true。但是你要用==来判断"a"=="a"就为false了。因为不是同一个对象。判断是否为null应该用"=="这样判断。而且一般我们会把null写在前面。防止后面发生空指针异常。
      

  10.   

    equals比较的是对象的引用,null对象  则比较的是对象本身地址!
      

  11.   

    我晕,没一个说到点上的。首先应该写成 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]得时候