interface Lookup
{
Object find(String name);
}interface EncLookup extends Lookup
{
void add(String name,Object value);
void remove(String name);
}class SimpleEncLookup implements EncLookup
{
private String[] names={"zlf","lzt","wy"};
private Object[] values={46,25,31};
public Object find(String name)
{
for(int i=0;i<names.length;i++)
{
if(names[i].equals(name))
return values[i];
}
return null;
}
public void add(String name,Object value)
{
int len=names.length+1;
String[] tempnames=new String[len];
Object[] tempvalues=new Object[len];
for(int i=0;i<len-1;i++)
{
tempnames[i]=names[i];
tempvalues[i]=values[i];
}
tempnames[len-1]=name;
tempvalues[len-1]=value;
names=tempnames;
values=tempvalues;
}
public void remove(String name)
{
int len=names.length-1;
String[] tempnames=new String[len];
Object[] tempvalues=new Object[len];
for(int i=0;i<len+1;i++)
{
int j=0;
if(!names[i].equals(name))
{
tempnames[j]=names[i];
tempvalues[j]=values[i];
j++;
}
}
names=tempnames;
values=tempvalues;
}
public static void main(String[] args)
{
EncLookup lp = new SimpleEncLookup();
Object o = lp.find("zlf");
System.out.println("Object o="+o);
lp.remove("zlf");
System.out.println("Remove zlf and its value.");
o = lp.find("zlf");
System.out.println("Object o="+o);
lp.add("xzh",45);
System.out.println("Add Name:xzh,Value:45");
o = lp.find("xzh");
System.out.println("Object o="+o);
}
}
提示空指针出现在第20行和第65行。。继续求助各位高手

解决方案 »

  1.   

    interface Lookup
    {
    Object find(String name);
    }interface EncLookup extends Lookup
    {
    void add(String name,Object value);
    void remove(String name);
    }class SimpleEncLookup implements EncLookup
    {
    private String[] names={"zlf","lzt","wy"};
    private Object[] values={46,25,31};
    public Object find(String name)
    {
    for(int i=0;i<names.length;i++)
    {
    if(names[i].equals(name))
    return values[i];
    }
    return null;
    }
    public void add(String name,Object value)
    {
    int len=names.length+1;
    String[] tempnames=new String[len];
    Object[] tempvalues=new Object[len];
    for(int i=0;i<len-1;i++)
    {
    tempnames[i]=names[i];
    tempvalues[i]=values[i];
    }
    tempnames[len-1]=name;
    tempvalues[len-1]=value;
    names=tempnames;
    values=tempvalues;
    }
    public void remove(String name)
    {
    int len=names.length-1;
    String[] tempnames=new String[len];
    Object[] tempvalues=new Object[len];
    for(int i=0;i<len+1;i++)
    {
    int j=0;
    if(!names[i].equals(name))
    {
    tempnames[j]=names[i];
    tempvalues[j]=values[i];
    j++;
    }
    }
    names=tempnames;
    values=tempvalues;
    }
    public static void main(String[] args)
    {
    EncLookup lp = new SimpleEncLookup();
    Object o = lp.find("zlf");
    System.out.println("Object o="+o);
    lp.remove("zlf");
    System.out.println("Remove zlf and its value.");
    o = lp.find("zlf");
    System.out.println("Object o="+o);
    lp.add("xzh",45);
    System.out.println("Add Name:xzh,Value:45");
    o = lp.find("xzh");
    System.out.println("Object o="+o);
    }
    }
      

  2.   

    interface Lookup
    {
    Object find(String name);
    }interface EncLookup extends Lookup
    {
    void add(String name,Object value);
    void remove(String name);
    }class SimpleEncLookup implements EncLookup
    {
    private String[] names={"zlf","lzt","wy"};
    private Object[] values={46,25,31};
    public Object find(String name)
    {
    for(int i=0;i<names.length;i++)
    {
    if(names[i].equals(name))
    return values[i];
    }
    return null;
    }
    public void add(String name,Object value)
    {
    int len=names.length+1;
    String[] tempnames=new String[len];
    Object[] tempvalues=new Object[len];
    for(int i=0;i<len-1;i++)
    {
    tempnames[i]=names[i];
    tempvalues[i]=values[i];
    }
    tempnames[len-1]=name;
    tempvalues[len-1]=value;
    names=tempnames;
    values=tempvalues;
    }
    public void remove(String name)
    {
    int len=names.length-1;
    String[] tempnames=new String[len];
    Object[] tempvalues=new Object[len];
    for(int i=0;i<len+1;i++)
    {
    int j=0;
    if(!names[i].equals(name))
    {
    tempnames[j]=names[i];
    tempvalues[j]=values[i];
    j++;
    }
    }
    names=tempnames;
    values=tempvalues;
    }
    public static void main(String[] args)
    {
    EncLookup lp = new SimpleEncLookup();
    Object o = lp.find("zlf");
    System.out.println("Object o="+o);
    lp.remove("zlf");
    System.out.println("Remove zlf and its value.");
    o = lp.find("zlf");
    System.out.println("Object o="+o);
    lp.add("xzh",45);
    System.out.println("Add Name:xzh,Value:45");
    o = lp.find("xzh");
    System.out.println("Object o="+o);
    }
    }
      

  3.   

            for(int i=0;i<len+1;i++)
            {
                int j=0;
                if(!names[i].equals(name))
                {
                    tempnames[j]=names[i];
                    tempvalues[j]=values[i];
                    j++;
                }
            }
    这个循环里面有问题,j=0位置不对,导致j++之后下一次循环j又成0了