indexof出错

kaisey 2009-11-17 04:51:18
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class fr2
{
public static void main(String[] args)
{
drawframe fr=new drawframe();
fr.drawgj();
}
}
class drawframe extends WindowAdapter implements TextListener//
{
int y,z;
Frame f=new Frame("梦幻西游工具");
TextField text=new TextField(30);
TextArea ta1=new TextArea(5,40);
TextArea ta2=new TextArea(5,40);
void drawgj()
{

Font MyFont= new Font("隶书",Font.BOLD,20);
f.setLayout(null);
f.setSize(800,460);
f.setLocation(100,100);
f.setFont(MyFont);
text.setBounds(0,30,800,30);
ta1.setBounds(0,60,400,400);
ta2.setBounds(400,60,400,400);
f.add(text);
f.add(ta1);
f.add(ta2);
f.setVisible(true);
f.addWindowListener(this);//关闭程序
text.addTextListener(this); //文本监视
}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public void textValueChanged(TextEvent e)
{
//ta1.setText("");
ta2.setText("");
String[] str=new String[100];
File fl=new File("d:"+File.separator+"1.txt");
char tab=9; //定义TAB字符
try //将文件信息放入str[]
{
FileInputStream fis=new FileInputStream(fl);
byte[] buf=new byte[1000];
int len=fis.read(buf);
for(int i=0;i<len;i++) //罗列所有输入
{
if(buf[i]==tab) //当遇到TAB时,前一个字串结束
{
str[y]=new String(buf,z,i-z); //构造前一个字符串
z=i+1; //保留上次的位置
System.out.println(str[y]);
y=y+1;
System.out.println(y);
}
}
fis.close();
}
catch(Exception g)
{

}
ta2.append(text.getText());
//if(text.getText()!="")
{
//ta1.setText(null);
for(int i=0;i<100;i++)
{
if(str[i].indexOf(text.getText())!=-1) //如果文本是文件的一个子串,会返回位置-ID,不是返回-1
{
ta1.append(str[i]+"\n");
}
}
}
}
}
在执行的时候,老是报if(str[i].indexOf(text.getText())!=-1) 出错。说是空引用,
而且第2次改变TEXT数值时,TA1就不变化了
...全文
101 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaisey 2009-11-17
  • 打赏
  • 举报
回复
真的诶,按你的修改了后,不报错了,可是你在帮我看下程序的逻辑错在哪?
就是在TEXT打入第2个字符,TA1仍然不变化,
还有我前面的STR[]为什么为空,我都给他读取了文件内容了啊
stamp80 2009-11-17
  • 打赏
  • 举报
回复
str数组依赖于1.txt的大小,当它不存在时,数组就不会正常初始化,里面的值都是null,所以报错。
因为第一次执行报错了,所以程序就死在那里了,当然ta1不会变化了
closewbq 2009-11-17
  • 打赏
  • 举报
回复
如果d:"+File.separator+"1.txt你指定的文件不存在
肯定str[]数组中说明都没有肯定会抛异常了!
kaisey 2009-11-17
  • 打赏
  • 举报
回复
调试过了,str[]不空,,我还打印出来了。
紫炎圣骑 2009-11-17
  • 打赏
  • 举报
回复
ta2.append(text.getText());
// if(text.getText()!="")
{
// ta1.setText(null);
for (int i = 0; i < 100; i++)
{
if (null != str[i] && str[i].indexOf(text.getText()) != -1) // 如果文本是文件的一个子串,会返回位置-ID,不是返回-1
{
ta1.append(str[i] + "\n");
}
}
}
紫炎圣骑 2009-11-17
  • 打赏
  • 举报
回复
        ta2.append(text.getText());
// if(text.getText()!="")
{
// ta1.setText(null);
for (int i = 0; i < 100; i++)
{
if (null != str[i] && str[i].indexOf(text.getText()) != -1) // 如果文本是文件的一个子串,会返回位置-ID,不是返回-1
{
ta1.append(str[i] + "\n");
}
}
}
sinosinux 2009-11-17
  • 打赏
  • 举报
回复
调试一下,看看str[i]是不是空

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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