您的位置:程序门 -> java -> j2se / 基础类



现在写了1个程序  共享变量出错 共享object出错 ,还望帮小弟看下,回答的好分更多


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


现在写了1个程序 共享变量出错 共享object出错 ,还望帮小弟看下,回答的好分更多[已结贴,结贴人:huruihappy]
发表于:2007-03-08 22:46:44 楼主
//===============第1个类====================
public   class   loadinginformation   extends   thread   {      
static   public   vector   friendid=new   vector();        
static   public   int   friendno;
```
``
public   loadinginformation(){
        this.start();
        }

public   void   run(){
friendno=dis.readint();
while(friendno> 0){
friendid.addelement(dis.readutf());
friendno--;
}
}
//===========第2个类================
public   class   list1{
  public   friendlist()   {
system.out.println( "number   "+loadinginformation.friendno)
for(int   i=0;i <loadinginformation.friendno;i++){
        system.out.println(loadinginformation.friendid.elementat(i).tostring());
  friendname[i]=loadinginformation.friendid.elementat(i).tostring();
    system.out.println(loadinginformation.friendid.elementat(i).tostring());
}
}

}


我在第2个类中要调用第1个类的值,我第1个类中的   vector   friendid和   friendno都已设成了static.我想在第2个类中共享第1个类的值,   但是在第2个类中引用时候测试出friendno=0和在第1个类的值不同(第1个类中friendno的值为3),怎么回事   还望高手指点
发表于:2007-03-09 09:04:131楼 得分:0
有人看下不
发表于:2007-03-09 09:13:022楼 得分:20
修改如下:
//===========第2个类================
public   class   friendlist{
  public   friendlist()   {
system.out.println( "number   "+loadinginformation.friendno)//这里不会执行第一个类的run
loadinginformation   loadinginformation   =   new   loadinginformation();
for(int   i=0;i <loadinginformation.friendno;i++){
        system.out.println(loadinginformation.friendid.elementat(i).tostring());
  friendname[i]=loadinginformation.friendid.elementat(i).tostring();
    system.out.println(loadinginformation.friendid.elementat(i).tostring());
}
}

}
发表于:2007-03-09 09:23:493楼 得分:10
顶楼上的!!
要定义一个对象,激发loadinginformation的构造函数才成.
调用静态成员,只初始化静态成员,并不调用构造函数
发表于:2007-03-09 13:23:474楼 得分:0
还是取不到第1个类中的值   我要取的是第1个类中static变量值改变以后的值
发表于:2007-03-09 21:06:015楼 得分:0
我就想要第2个类调用从第1个类中run()方法中friendno的值
比如说friendno从dis.readint()的值是3,那么在第2个类中的system.out.println( "number   "+loadinginformation.friendno)点输出的也应该是3,但是现在输出的是0.
现在要求第2个类可以new第1个类,但是第1个类不能new第2个类,请问下高手应该怎么做才能保证第1个类的值能传递到第2个类中.
发表于:2007-03-09 22:31:506楼 得分:20
public   void   run(){
friendno=dis.readint();
while(friendno> 0){
friendid.addelement(dis.readutf());
friendno--;                                     //执行之后friendno为0
}
改为:

public   void   run(){
friendno=dis.readint();
int   count   =   friendno;                     //添加记录数字
while(count> 0){
friendid.addelement(dis.readutf());
count--;                               //执行之后,count为0
}
发表于:2007-03-10 09:14:467楼 得分:0
还是在第2个类里面读不到第1个类的friendno``
发表于:2007-03-10 10:28:448楼 得分:50
//===============第1个类====================
public   class   loadinginformation   extends   thread   {      
private   vector   friendid=new   vector();        
private     int   friendno;

        public   loadinginformation(){
        }

        public   void   run(){
                friendno=dis.readint();
                int   count   =   friendno;
                while(count   > 0){
                            friendid.addelement(dis.readutf());
                            count   --;
                  }
        }

        public   int   getfriendno(){
                  return   friendno;
        }
        public   vector   getfriendid(){
                  return   friendid;
        }
}
//===========第2个类================
public   class   friendlist{
          public   friendlist()   {
                  loadinginformation   loadinginformation   =   new   loadinginformation();
                  loadinginformation   .start();
                  int   friendnumber   =   loadinginformation.getfriendno();
                  string[]   friendname   =   new   string[friendnumber];
                  vector   temp   =   loadinginformation.getfriendid();
                  for(int   i=0;i <friendnumber;i++){
                              system.out.println(temp.elementat(i).tostring());
                              friendname[i]=temp.elementat(i).tostring();
                  }
          }
}
发表于:2007-03-10 22:12:229楼 得分:0
楼上的得不到值啊   得到的值还是0
发表于:2007-03-10 22:55:3110楼 得分:0
发现问题了   我用static   public   int   friendno;   运行程序   结果第1次为0,再运行1次程序   结果就读出是正确的值这个问题怎么解决``
发表于:2007-03-10 23:08:0111楼 得分:0
以后每次运行的时候   都只得到上1次运行存在内存中的值   ,但是得不到本次的值```


快速检索

最新资讯
热门点击