我的任务是在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时。 这意味着该代码无法在对象中存储数据。 我怎么了 错误行