java 的一个关于数组的问题

lixiang201101 2013-12-01 05:05:17
package shiyan2_2;
import java.util.*;
//import java.io.*;
class info
{
int num;
String name;
String sex;
int pnum;
String address;
};
public class Tongxun //extends info
{
//info in[];
int size;//记录当前元素个数
public void input(info in[] )
{
Scanner sc=new Scanner(System.in);
//System.out.println(in.length);
for(int i=0;i<in.length;i++)
{
in[i].num=i;
System.out.println("请输入姓名:");
in[i].name=sc.next();
System.out.println("请输入性别:");
in[i].sex=sc.next();
System.out.println("请输入电话:");
in[i].pnum=sc.nextInt();
System.out.println("请输入地址:");
in[i].address=sc.next();
}
size=in.length;
}
public void Addarr(info in[])//新增地址
{
System.out.println("请输入您要添加的个数:");
int count=0;
Scanner sc=new Scanner(System.in);
count=sc.nextInt();
info[] newinfo=new info[in.length+count];//扩充数组
System.arraycopy(in,0,newinfo,0,in.length);//复制数组
for(int i=in.length;i<newinfo.length;i++)
{
newinfo[i].num=i;
System.out.println("请输入姓名:");
newinfo[i].name=sc.next();
System.out.println("请输入性别:");
newinfo[i].sex=sc.next();
System.out.println("请输入电话:");
newinfo[i].pnum=sc.nextInt();
System.out.println("请输入地址:");
newinfo[i].address=sc.next();
}
in=newinfo;//赋值覆盖
size=in.length;//更改数组长度
System.out.println("新增成功!!");
}
public void printall(info in[])
{
System.out.println("编号 姓名 性别 电话 通信地址 ");
for(int i=0;i<in.length;i++)
{
System.out.println("\t"+in[i].num+" \t"+in[i].name+" \t"+in[i].sex+" \t"+in[i].pnum+" \t"+in[i].address);
}
}
public static void main(String[] args)
{
Tongxun tx=new Tongxun();
System.out.println("请输入个数总数:");
int count=0;
Scanner sc=new Scanner(System.in);
count=sc.nextInt();
info in[]=new info[count];
tx.input(in);
tx.Addarr(in);
tx.printall(in);
/*while(1)
{
System.out.println("1.新增联系人");
System.out.println(".显示所有联系人");
System.out.println(".查询联系人");
System.out.println(".删除联系人");
}*/



}


}



运行出错;
新手不懂为什么,希望各位解答一下。

请输入个数总数:
5
Exception in thread "main" java.lang.NullPointerException
at shiyan2_2.Tongxun.input(Tongxun.java:22)
at shiyan2_2.Tongxun.main(Tongxun.java:74)
...全文
250 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lixiang201101 2013-12-01
  • 打赏
  • 举报
回复
引用 3 楼 huxiweng 的回复:
info in[]=new info[count]; info 数组里面的内容没有初始化
 public void Addarr(info in[])//新增地址
    {
        System.out.println("请输入您要添加的个数:");
        int count=0;
        Scanner sc=new Scanner(System.in);
        count=sc.nextInt();
        info[] newinfo=new info[in.length+count];//扩充数组
        System.arraycopy(in,0,newinfo,0,in.length);//复制数组
        for(int i=in.length;i<newinfo.length;i++)
        {
            newinfo[i].num=i;
            System.out.println("请输入姓名:");
            newinfo[i].name=sc.next();
            System.out.println("请输入性别:");
            newinfo[i].sex=sc.next();
            System.out.println("请输入电话:");
            newinfo[i].pnum=sc.nextInt();
            System.out.println("请输入地址:");
            newinfo[i].address=sc.next();
        }
        in=newinfo;//赋值覆盖
        size=in.length;//更改数组长度
        System.out.println("新增成功!!");
    }
这里不能对main里的进行修改啊,怎么办啊?添加不了
terry21 2013-12-01
  • 打赏
  • 举报
回复
NullPointerException 这个运行时异常都不懂?早点跟它做朋友吧,以后它会伴随你的编程生涯
teemai 2013-12-01
  • 打赏
  • 举报
回复
info in[]=new info[count]; info 数组里面的内容没有初始化
ganshenml 2013-12-01
  • 打赏
  • 举报
回复
楼上是正确的,你生成的数组之后里面的每一个元素要生成为一个info对象,你掉了这个操作就直接利用不存在的对象给其属性赋值了,从而导致空指针异常!
poooll 2013-12-01
  • 打赏
  • 举报
回复
in[i].num=i; // 22行这里空指针 info in[]=new info[count]; // 没有初始化。数组内容是null // add for(int i=0;i<count;i++){ in[i] = new info(); }

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧