package cbb;publicclassMyString{/**
* 数组长度
* 注意:我们存取字符串,是把它放到数组里面的
* 怎么放?字符串拆分成一个一个字符,放到char型数组里面
*/publicstaticfinalint MAX_SIZE =100;/**
* 我们放字符串的那个数组,实际的大小(存放数据的大小)
*/int length;/**
* 我们放字符串的那个数组,初始是100,类型char
*/char[] data;/**
* 单参构造函数
* 为什么不用public修饰符,构造函数默认就是public修饰的
* 数组是data.length,字符串是str.length()
* @author 己千之
* @param str 字符串
*/MyString(String str){
length = str.length();
data =newchar[MAX_SIZE];for(int i=0; i<length; i++){// 把字符串存放到数组里面
data[i]= str.charAt(i);}// of for}// of the constructor/**
* 重写toString()
* 这个方法一定要熟悉了,这是常用的,其中奥妙多体会
* 重写父类方法,只能显示的调用(必须用public)
* @return resultString
*/public String toString(){
String resultString ="";for(int i=0; i<length; i++){
resultString += data[i];}// of forreturn resultString;}//以上基本上是设计一个类,解决问题的基础代码。////下面就可以是你自己设计的方法,来解决问题。/////当然,我只是提供了一个比较明确的思路。看各人。/**
* 返回paraStr在原字符串中第一次出现的索引
* @author 己千之
* @param paraStr
* @return i 下标
*/publicintLocate(String paraStr){/**
* 标志位,自行理解用途
*/boolean flag =false;for(int i=0; i<length-paraStr.length()+1; i++){
flag =true;for(int j=0; j<paraStr.length(); j++){if(data[i+j]!= paraStr.charAt(j)){
flag =false;break;}// of if}// of for jif(flag){// 只返回paraStr在原字符串中第一次出现的索引return i;}// of if}// of for ireturn-1;}// of locate}// of MyString
Locate就是字符串匹配的方法
测试类
package cbb;publicclassTest_MyString{publicstaticvoidmain(String[] args){//test1
MyString str =newMyString("I love you but only love you");
System.out.println(str.toString());//test2
System.out.println("you的位置:"+str.Locate("you"));
System.out.println("youg的位置:"+str.Locate("youg"));}}