空指针异常生成

我的任务是在Java中建立一个通讯录,我可以在其中存储联系人,编辑联系人和删除联系人。 这是我的源代码-

import java.util.*;

class Address
{
    private int Id;
    private String name;
    private String pn;
    private String add;

    Address(int i,String name,String pn,String add){
        this.Id = i;
        this.name = name;
        this.pn = pn;
        this.add = add;
    }
    Address()
    {}
    int Id()
    {
        return Id;
    }
    String na()
    {
        return name;
    }
    String pn()
    {
        return pn;
    }
    String add()
    {
        return add;
    }
}

class Book {

    private int totalid;
    private Address ab[] = new Address[100];
    Book(int te)
    {
        this.totalid = te;
    }
    public void printbook(){
        int i;
        if(totalid >= 0) {
            for (i = 0 ; i <= totalid ; i++)
            {
                System.out.println("id: " + i);
                System.out.println("Id no: " + ab[i].Id() + " name: " + ab[i].na() + " phone no: " + ab[i].pn() + " address:" + ab[i].add());
            }
        }
        else System.out.println("NO id issued");
    }

    public void addid(Address b)
    {
            ab[totalid] = b;
        System.out.println("done");
    }
    public int get_id()
    {
        return totalid;
    }
    public void update(String n)
    {
         int i;
          for(i = 0 ; i < totalid ; i++) {
              if (ab[i].na().equals(n)) {
                  Scanner sc = new Scanner(System.in);
                  int id;
                  String a,b,c;
                  System.out.println("New Id no: ");
                  id = sc.nextInt();
                  System.out.println("New name: ");
                  a = sc.nextLine();
                  System.out.println("New phone number: ");
                  b = sc.nextLine();
                  System.out.println("New address: ");
                  c = sc.nextLine();
                  Address t = new Address(id,a,c);
                  ab[i] = t;
                  System.out.println("updated successfully");
              }
          }
    }
    public void delete(String n)
    {
        int i;
        for(i = 0 ; i < totalid ; i++) 
           {
            if (ab[i].na().equals(n)) 
               {
                   ab[i] = null;

               }
           }

    }
}

class Main {

    public static void main(String[] args) {
        int r = 0;
        while(true)
        {

        Scanner sc = new Scanner(System.in);
        System.out.println("1. create new contact");
        System.out.println("2. update a contact");
        System.out.println("3. delete a contact");
        System.out.println("4. print contactbook");
        int i = sc.nextInt();
        Book t;
        switch (i)
        {
            case 1 :   int id;
                String a,c;
                System.out.println("Id no: ");
                id = sc.nextInt();
                sc.nextLine();
                System.out.println("name: ");
                a = sc.nextLine();
                System.out.println("phone number: ");
                b = sc.nextLine();
                System.out.println("address: ");
                c = sc.nextLine();
                t = new Book(r++);
                Address g = new Address(id,c);
                t.addid(g);
                System.out.println(t.get_id());
                break;
            case 2:
                System.out.println("name: ");
                String f = sc.nextLine();
                t = new Book(r);
                t.update(f);
                break;
            case 3:
                System.out.println("name: ");
                String h = sc.nextLine();
                t = new Book(r);
                t.delete(h);
                break;
            case 4: 
                  t = new Book(r);
                  t.printbook();
                  break;
        }
        }
    }
}

这给了我一个空指针异常 当我通过调用addid()创建联系人后要调用printbook时。 这意味着该代码无法在对象中存储数据。 我怎么了 错误行

lipton_12345678 回答:空指针异常生成

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3153222.html

大家都在问