e616656856
e616656856
2011-03-04 23:20

java多线程

已采纳

class lgj extends Thread
{
String l=null;
public void lgj(String s4)
{

l=s4;

}
public void run()
{

此处为107行.......... File g=new File(l);
File[] lName=g.listFiles();
for (int i=0;i {
s1=text.getText();
if(lName[i].getName()==s1)
area.append("我找到了!");
}
return;
}
}
public void tqd(File f)
{
int c=0;
File[] fileName = f.listFiles();
for(k=0; k {
if(t)break;
//area.append("\n查找......\n"+fileName[k].getName()+"\n"+fileName[k].getAbsolutePath());
if(fileName[k].isDirectory())
{
tqd(fileName[k]);
new lgj().lgj(fileName[k].getName());
if(c {
new lgj().start();
c++;
}
}
}
}
Exception in thread "Thread-7" java.lang.NullPointerException
at java.io.File.(Unknown Source)
at sosoWindow$lgj.run(soso.java:107)
为什么总是提示我空指针异常,请大家帮忙看下

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • maowei009 maowei009 10年前

    这个我觉得跟线程一点都不矛盾啊!你总归还是new了对象的不是么?跟你原先的方法都没出入,不知道你为什么这么问

    点赞 评论 复制链接分享
  • maowei009 maowei009 10年前

    new lgj().lgj(fileName[k].getName());
    if(c<32)
    {
    new lgj().start();
    c++;
    }

    你可以这样写 lgj s = new lgj();
    s.lgj(fileName[k].getName());

    if(c<32)
    {
    s.start();
    c++
    }
    你自己看出问题了么?你重新new 了一个对象,你那里面的l当然还是为NULL

    点赞 评论 复制链接分享
  • linvar linvar 10年前

    [code="java"]
    给点提问的智慧吧...
    别人看这样的代码很累... :arrow:
    [/code]

    点赞 评论 复制链接分享
  • maowei009 maowei009 10年前

    那肯定是你传进去的l是NULL啦,我看你上面定义了String l=null;如果你没调用你的lgj方法那他肯定是null啊,就算你调用了这个方法,如果s4传进来就是null,那也还是null啊!建议你把最前面那个null换成“”;

    点赞 评论 复制链接分享

相关推荐