利用字符数组判断……我编写的是
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周……

解决方案 »

  1.   

    主要是老师要求锻炼逻辑……
    作业要求就是不用api,自己写逻辑……
    新手不知道如何下手……
      

  2.   

    这是我刚写的,你看看顶用么,我也没完全地测试可能有bugimport 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("中国足球,何日出头",","));;
        }}
      

  3.   


    哇!你的方法是对的!逻辑很清晰啊!!
    我原来好像弄错了continue的功能了!
    多谢!