手记

从网上找了一些关于字符串的练习题(我的答案 VS 网上出题者的答案)

题目:
给定一个字符串,判断该字符串中是否包含某个子串.如果包含,求出子串的所有出现位置.。字符串和子串均由用户输入
如:"abcbcbabcb34bcbd"中,"bcb"子串的出现位置为: 1,7,12.(我想说:题目出题者从给出的这个例子的答案就错了;如果在这条字符串里查找“bcb”,“bcb”肯定不止在3个位置。除了括号里的字,其他字都是复制出题者的原话)

我的答案:
package com.imooc;
import java.util.Scanner;
/**1. 给定一个字符串,判断该字符串中是否包含某个子串.
如果包含,求出子串的所有出现位置.
字符串和子串均由用户输入
*/

public class String1 {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        System.out.println("请输入被查找字符串:");
        Scanner input = new Scanner(System.in);
        String s = input.next();//s接收用户输入的字符串

        System.out.println("请输入需要查找的字符串:");
        Scanner input1 = new Scanner(System.in);
        String t = input.next();//t接收用户输入的子字符串

        System.out.println("你查找字符串出现位置为:");
        for(int i=0;i<s.length();i++){//循环s字符串
            if(i+t.length() > s.length())  break;//如果截取的长度超出字符串长度就跳出循环
            String y= s.substring(i,i+t.length());//截取s字符串的一段子字符串保存在y中

            if(y.indexOf(t) != -1){//判断t子串和y子串是否相同
                System.out.println(i);//相同则输出t子串的位置
            }
        }
    }

}

运行结果(输入要查找的字符为:3个):
请输入被查找字符串:
ccbcbcbcjasdccbc
请输入需要查找的字符串:
cbc
你查找字符串出现位置为:
1
3
5
13

运行结果2(输入要查找的字符为:4个):
请输入被查找字符串:
cccbccbcjasdccbc
请输入需要查找的字符串:
ccbc
你查找字符串出现位置为:
1
4
12

网上出题者的答案:
package com.imooc;
import java.util.Scanner;

public class Hello {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
         Scanner s = new Scanner(System.in);
            System.out.println("请输入一个父串");
            String str = s.next();

            System.out.println("请输入一个子串");
            String str1 = s.next();

            int stat = 0;
            while (true)
            {
                int i = str.indexOf(str1,stat);
                if (i==-1)
                {
                    break;
                }
                System.out.println(i);
                stat = i+str1.length();
            }

    }

}

运行结果(输入要查找的字符为:3个):
请输入一个父串
ccbcbcbcjasdccbc
请输入一个子串
cbc
1
5
13
(一样的父串,一样的子串,但是他的查找结果少了一个是不是?什么原因自己数那段用户输入的被查找父串就能知道原因)

运行结果2(输入要查找的字符为:4个):
请输入一个父串
cccbccbcjasdccbc
请输入一个子串
ccbc
1
12
(也是少了一个位置是不是?)

好了,就到这里结束了。想要直接复制我代码自己尝试运行的,别忘了创建类的名字要和我代码的相同,还有一个就是,直接复制,慕课网默认是在代码里面加上作者信息,记得删除作者信息。代码报错了自己看一下有没有违背我说的这两个问题。我这里的代码是直接复制在编译器运行过的,代码不会有报错的地方

1人推荐
随时随地看视频
慕课网APP

热门评论

网上出题者写的这段代码我看不懂,哪位大神能解释一下,就是这段: int i = str.indexOf(str1,stat) 这里的str1不是String类型吗?这里编译器为什么没报错?

查看全部评论