日期:2014-05-20  浏览次数:20710 次

求助:不用indexOf这个api,判断字符串中是否含有指定字符串
利用字符数组判断……我编写的是
import java.util.Scanner;
public class Chazhao
{
  public static boolean chazhao(String str1,String str2)
  {
  char[] a = str1.toCharArray();
  char[] b = str2.toCharArray();
  int L1 = str1.length();
  int L2 = str2.length();
  for (int i = 0;i <= L1; i++)
  {
for (int j = 0;j <= L2 ; j++ )
{
int k = i + j;
if (b[j] == a[k] && j== L2)
{
return true;
}
if (b[j] == a[k] || j != L2)
{
continue;
}
if (b[j] != a[k])
{
break;
}
}
if (i == L1-L2)
{
return false;
}
}
  return false;
  }
  public static void main(String[] args)
  {
  System.out.println("请输入原始字符串");
  Scanner input1 = new Scanner(System.in);
  String str1 = input1.nextLine();
  System.out.println("请输入要查找的字符串");
  Scanner input2 = new Scanner(System.in);
  String str2 = input2.nextLine();
boolean h = chazhao(str1,str2);
  if (h)
  {
System.out.println(str1 + "中含有" + str2);
  }
else
  {
System.out.println(str1 + "中没有" + str2);
}
  }

}

可以编译,不能运行……
拜求高手告诉我,逻辑哪里有错误……或者写个类似的……
我刚学习java 3周……

------解决方案--------------------
这是我刚写的,你看看顶用么,我也没完全地测试可能有bug
Java code

import java.util.Scanner;
public class Chazhao
{
    /**
     *
     * @param str1     str1表示被查询的序列
     * @param str2     str2表示查询的序列
     * @return
     */
    public static boolean chazhao(String str1,String str2){
        boolean result=false;
        char[] a = str1.toCharArray();
        char[] b = str2.toCharArray();
        int L1 = str1.length();
        int L2 = str2.length();
        if(L2>L1) return false;
        for (int i = 0;i < L1; i++){
           if(a[i]==b[0]&&i<=(L1-L2)){//寻找第一个匹配索引
               System.out.println("第一个匹配索引"+i);
               boolean flag=true;
                for(int j=0;j<L2;j++){
                    if(b[j]!=a[i+j]){
                        flag=false;
                        continue;
                    }
                    if(j==(L2-1)&&flag){ //遍历b字符数组,每个对匹配对应a的字符
                        //说明存在匹配的序列
                        return true;
                    }
                }
           }
        }
        return false;
    }
    public static void main(String[] args){
//        System.out.println("请输入原始字符串");
//        Scanner input1 = new Scanner(System.in);
//        String str1 = input1.nextLine();
//        System.out.println("请输入要查找的字符串");
//        Scanner input2 = new Scanner(System.in);
//        String str2 = input2.nextLine();
//        boolean h = chazhao(str1,str2);
//        if (h)
//        {
//            System.out.println(str1 + "中含有" + str2);
//        }
//        else
//        {
//            System.out.println(str1 + "中没有" + str2);
//        }
        System.out.println(""+chazhao("中国足球,何日出头",","));;
    }

}