ArrayList的问题

summerhai 2011-10-30 11:56:27
ConnectionBook cb = new ConnectionBook("HLM","Boy",123,"78201");
member.add(cb);

for(ConnectionBook c:member)
{
System.out.println("Name+Sex+Tel+Addr" + c.getName()+c.getSex()+c.getTel()+c.getAddr());
}

今天研究了一下午,在运行到这里的时候,控制台上输出的总是 Name+Sex+Tel+Addr nullnull0.0null
其中ConnectionBook类里面定义有 ArrayList<ConnectionBook> member = new ArrayList<ConnectionBook>();
其他变量函数也都有,就是这里不懂,明明已经赋值了,为什么显示不出来?

求教各位大神
...全文
222 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
summerhai 2011-11-01
  • 打赏
  • 举报
回复
好像没有点生成帖子。。现在好了
summerhai 2011-10-31
  • 打赏
  • 举报
回复
如果我想让前一次输入的数据在下一次运行的时候仍然可用,应该怎么处理?
例如:第一次运行时输入 1 2 3 4,当displaymember的时候会打印出来。
但是我关闭之后,第二次运行,再调用displaymember的时候,数据显示为空。
要怎样才能让数据保存下来呢?
用数据库吗?
lyhmy 2011-10-31
  • 打赏
  • 举报
回复
null就是空值,没赋值成,可以断点跟踪下是哪里问题导致没值,是没取到值,还是赋值
风尘中国 2011-10-31
  • 打赏
  • 举报
回复
你把ConnectionBook的代码贴出来,问题出在了ConnectionBook的构造方法执行的时候没有正确复制给对应的name sex tel addr这几个属性
summerhai 2011-10-31
  • 打赏
  • 举报
回复
Thank you so much!!
第一次写完整的代码,挺期待的,所以非常感谢各位~~
现在能正常运行了,有些小错误我自己改啦~~
funfenffun 2011-10-31
  • 打赏
  • 举报
回复

//这里不用改,其他都要改
public static void main(String[] args)
{
ConnectionBook cb = new ConnectionBook();
cb.printGUI();
cb.run();

}
funfenffun 2011-10-31
  • 打赏
  • 举报
回复
又找到一个错,你犯了3遍以上

//错
ConnectionBook cb1(cb) = new ConnectionBook();
cb.printGUI();
cb.run();
//对
printGUI();
run();
//你的member是存在cb里面的,但是你又新建了一个cb1什么的鬼东西,cb1里面的member是空的,然后你死命得在cb1的member里找值,这就出错了丫,你一定要用你add了东西的那个member的ConnectionBook,要用正确的对象调方法。

又又找到了一个错,我晕

//我改了你的一个index里面的东西,其他的都有点错,你自己改
public void searchMember()
{
System.out.printf("Please input your search condition :");
System.out.printf("1,Name; 2,Sex, 3,Tel, 4,Addr ");
Scanner string = new Scanner(System.in);
index = string.nextInt();
if(index == 1)
{
System.out.printf("Please input member'name :");
Scanner string1 = new Scanner(System.in);
getName = string1.nextLine();

System.out.println("searchMember:member.size()="+this.member.size());

boolean flag = false;//判断是否找到符合的东西

for(ConnectionBook c:member)
{
if(c.getName().equals(getName)){//判断找到符合的值的条件要写对
System.out.println("Name " + "Sex " + "Tel " + "Addr ");
System.out.println(getName+" " + getSex + " " + getTel + " " + getAddr + " " );
flag = true;//找到符合的东西时设为true
}
}
if(flag==false){//没找到符合的东西时flag仍为false,输出错误信息
System.out.printf("The member you found is not exists!\n");
}
...
summerhai 2011-10-31
  • 打赏
  • 举报
回复
我在displayMember函数里面加了打印member.size()的语句,执行之后是0,我已经添加过一个member了,但是member的大小还是0 ,这是怎么回事,求解??
summerhai 2011-10-31
  • 打赏
  • 举报
回复
非常感谢~~
两个错误都挺对的,我一直没发现,现在改正了~~多谢
但是在displayMember()和searchMember()函数执行的时候还是有错,是不是传进member里的数据没有保存啊?为什么显示不出来
funfenffun 2011-10-31
  • 打赏
  • 举报
回复
写错2个地方

//写错
public ConnectionBook(String aName,String aSex,double aTel,String aAddr)
{
aName=name;
aSex=sex;
aTel=tel;
aAddr=addr;
}
//修改后
//应该把传进来的值赋给ConnectionBoo类的私有变量
//你之前的写法是把ConnectionBoo类的私有变量(null)赋给传进来的值,私有变量仍然为null
public ConnectionBook(String aName,String aSex,double aTel,String aAddr)
{
name=aName;
sex=aSex;
tel=aTel;
addr=aAddr;
}
//写错
ConnectionBook cb = new ConnectionBook("getName","getSex",getTel,"getAddr");
//修改后,getName直接传就可以了,你上面的写法等于是传了一个值为getName的String进去,这是不对的
ConnectionBook cb = new ConnectionBook(getName,getSex,getTel,getAddr);
summerhai 2011-10-31
  • 打赏
  • 举报
回复
import java.util.*;

public class ConnectionBookTest
{
public static void main(String[] args)
{
ConnectionBook cb = new ConnectionBook();
cb.printGUI();
cb.run();

}

}

class ConnectionBook
{

public void printGUI()
{
System.out.print(" Welcome to our ConnectionBook! \n");

System.out.printf("%d : Add member \n",index+1);
System.out.printf("%d : Search member \n",index+2);
System.out.printf("%d : Modifiy member \n",index+3);
System.out.printf("%d : Display member \n",index+4);
System.out.printf("%d : Eixt \n",index+5);

}

public void run()
{
System.out.println("Please input your choice:");
Scanner in = new Scanner(System.in);
index = in.nextInt();

switch(index)
{
case 1:
addMember();
break;
case 2:
searchMember();
break;
case 3:
modifyMember();
break;
case 4:
displayMember();
break;
case 5:
System.exit(0);
break;
default:
break;
}

}

public void addMember()
{
System.out.println("You will add a member to the ConnectionBook!\n");
System.out.println(" Please input member's name:");
Scanner string = new Scanner(System.in);
getName = string.nextLine();
System.out.println(" Please input member's sex:");
getSex = string.nextLine();
System.out.println(" Please input member's tel:");
getTel = string.nextDouble();
System.out.println(" Please input member's addr:");
getAddr = string.nextLine();
getAddr = string.nextLine();
//验证赋值是否成功
System.out.println("Name+Sex+Tel+Addr" + getName+getSex+getTel+getAddr);//这里是有值的

ConnectionBook cb = new ConnectionBook("getName","getSex",getTel,"getAddr");
member.add(cb);

for(ConnectionBook c:member)
{
System.out.println("Name+Sex+Tel+Addr" + c.getName()+c.getSex()+c.getTel()+c.getAddr());
}//这里始终是nullnull0.0null



System.out.printf(" Add member %s Success !\n",getName);

index = 0;
ConnectionBook cb1 = new ConnectionBook();
cb1.printGUI();
cb1.run();

}

public void displayMember()
{
System.out.println("Welcome to our ConnectionBook!\n");
for(int i=0;i<member.size();i++)
{
ConnectionBook cb = member.get(i);

System.out.println("Name " + "Sex " + "Tel " + "Addr ");
System.out.println(cb.getName()+" " + cb.getSex() + " " + cb.getTel() + " " + cb.getAddr() + " " );
}

index = 0;
ConnectionBook cb = new ConnectionBook();
cb.printGUI();
cb.run();
}

public void searchMember()
{
System.out.printf("Please input your search condition :");
System.out.printf("1,Name; 2,Sex, 3,Tel, 4,Addr ");
Scanner string = new Scanner(System.in);
index = string.nextInt();
if(index == 1)
{
System.out.printf("Please input member'name :");
Scanner string1 = new Scanner(System.in);
getName = string1.nextLine();
if(member.contains(getName))
{
System.out.println("Name " + "Sex " + "Tel " + "Addr ");
System.out.println(getName+" " + getSex + " " + getTel + " " + getAddr + " " );

}
else
System.out.printf("The member you found is not exists!\n");


}
else if(index == 2)
{
System.out.printf("Please input member'sex :");
Scanner string1 = new Scanner(System.in);
getSex = string1.nextLine();
if(member.contains(getSex))
{
System.out.println("Name " + "Sex " + "Tel " + "Addr ");
System.out.println(getName+" " + getSex + " " + getTel + " " + getAddr + " " );

}
else
System.out.printf("The member you found is not exists!\n");

}
else if(index == 3)
{
System.out.printf("Please input member'tel :");
Scanner string1 = new Scanner(System.in);
getTel = string1.nextDouble();
if(member.contains(getTel))
{
System.out.println("Name " + "Sex " + "Tel " + "Addr ");
System.out.println(getName+" " + getSex + " " + getTel + " " + getAddr + " " );

}
else
System.out.printf("The member you found is not exists!\n");

}
else if(index == 4)
{
System.out.printf("Please input member'addr :");
Scanner string1 = new Scanner(System.in);
getAddr = string1.nextLine();
if(member.contains(getAddr))
{
System.out.println("Name " + "Sex " + "Tel " + "Addr ");
System.out.println(getName+" " + getSex + " " + getTel + " " + getAddr + " " );

}
else
System.out.printf("The member you found is not exists!\n");

}
else
System.out.printf("The condition you input is error.Please input again\n");

index = 0;
ConnectionBook cb = new ConnectionBook();
cb.printGUI();
cb.run();

}

public void modifyMember()
{
System.out.printf("Which member would you like to modify?\n");
searchMember();
ConnectionBook cb = new ConnectionBook();
System.out.printf("Please input the new infomation:\n");

System.out.println(" Please input member's name:");
Scanner string = new Scanner(System.in);
getName = string.nextLine();
System.out.println(" Please input member's sex:");
getSex = string.nextLine();
System.out.println(" Please input member's tel:");
getTel = string.nextDouble();
System.out.println(" Please input member's addr:");
getAddr = string.nextLine();
getAddr = string.nextLine();

cb.setName(getName);
cb.setSex(getSex);
cb.setTel(getTel);
cb.setAddr(getAddr);

System.out.printf("Member %s had modified \n",getName);

index = 0;
ConnectionBook cb1 = new ConnectionBook();
cb1.printGUI();
cb1.run();
}


public ConnectionBook(String aName,String aSex,double aTel,String aAddr)
{
aName=name;
aSex=sex;
aTel=tel;
aAddr=addr;
}

public ConnectionBook()
{

}

public String getName()
{
return name;
}

public void setName(String aName)
{
aName=name;
}

public String getSex()
{
return sex;
}

public void setSex(String aSex)
{
aSex=sex;
}

public double getTel()
{
return tel;
}

public void setTel(double aTel)
{
aTel=tel;
}

public String getAddr()
{
return addr;
}

public void setAddr(String aAddr)
{
aAddr=addr;
}

ArrayList<ConnectionBook> member = new ArrayList<ConnectionBook>();
private String name="";
private String sex;
private double tel;
private String addr;
private static int index=0;
public static String getName=null;
public static String getSex=null;
public static double getTel=0.0;
public static String getAddr=null;


}
源码在这里,4楼的意思我明白,可是结果就是输出的null,我第一次完整的自己编写代码,所以卡在这个问题上了,很纠结,谢谢2,3,4楼~~
shenhua 2011-10-31
  • 打赏
  • 举报
回复
取值肯定要这样的:

ArrayList<ConnectionBook> member = new ArrayList<ConnectionBook>();
//如果只有一条数据的话。直接
ConnectionBook cb=member.get(0);
//然后输入就是了


//如果是多条数据的话。
//---
if(member.size()>0)
{
for(int i=0;i<member.size();i++)
{
ConnectionBook cb=member.get(i);
System.out.println("Name+Sex+Tel+Addr" + cb.getName()+cb.getSex()+cb.getTel()+cb.getAddr());

}
}
funfenffun 2011-10-31
  • 打赏
  • 举报
回复
没分,我的半个上午,吐血
summerhai 2011-10-31
  • 打赏
  • 举报
回复
我给分了~~不知道怎么不显示出来
funfenffun 2011-10-31
  • 打赏
  • 举报
回复
用数据库,结贴的时候没给分???

58,454

社区成员

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

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