java记事本查找_记事本的查找技术

首先你会将记事本的外观都做好。文本区域推荐使用JTextArea。假如这个文本的变量命名为jTextArea。接下来我开始写算法了。建立一个类FindMethod,专门用来计算查找的算法。

public class FindMethod {

private NotePad note;//记事本的主类

private String text;//定义从记事本文本区域传来的文本。

private String mathe;//定义您所查询的字符串

private int ltext=0;//文本的长度

private int lmathe=0;//查询字符串的长度

private char[] textc;//字符数组,保存文本的单个字符

private char[] mathec;//字符数组,保存查询的单个字符

private int[] index; //返回将要查找到的字符串或字符所在记事本文本区域的索引

private int buttonsize;

private boolean isBreak = false;//是否需要循环

public FindMethod(String text,String mathe,NotePad note) {

this.text=text;

this.mathe=mathe;

this.note=note;

ltext=text.length();

lmathe=mathe.length();

mathec=new char[lmathe];

textc=new char[ltext];

index=new int[lmathe];

for(int i=0;i

textc[i]=text.charAt(i);

}

for(int i=0;i

mathec[i]=mathe.charAt(i);

}

}

public void findText() {

int z=0;

if(lmathe>ltext) {//如果要查找的字符串的长度大于文本的长度则没有匹配的内容

JOptionPane.showMessageDialog(note, "没有到找匹配的内容!");

}

else {

for(int i=0;i

z=i;

for(int j=0;j

if(mathec[j]==textc[z]) {

isBreak=true;

index[j]=z;

z++;

}

else{

isBreak=false;

index=new int[lmathe];

break;

}

}

if(isBreak==true)

break;

}

}

}

public int[] getIndex() {

return index;

}

}

关于findText()方法,其实就是查找算法的核心。比如文本为“12345”,你要查找的是“45”。那么肯定是需要查找4次,并且要进行两次比较(比较的内容是文本的'4'与查找的'4',文本的'5' 与查找的'5')。好了这些你知道了,那么你会发现其中有个规律。如果文本的长度是N,查找的文本的长度是M(N>=M),则有需要进行(N-M)+1次查询,并且进行M次比较。如果比较成功的话那么isBreak就为true,并且让index这个数组依次赋上比较的M的长度的索引,并且数组的范围在

以上的方法可能有些麻烦,但是我感觉整体的思路还是可以的,适合与我们这些菜鸟。如果看不懂,就多看几遍,理解那个规律。再理解不了可以与我联系,谢谢。实例附件在http://www.itkay.com/?action=show&id=29可以下载到

posted on 2008-07-25 00:48 ppoo 阅读(952) 评论(0)  编辑  收藏

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值