题目:
给定一个字符串,判断该字符串中是否包含某个子串.如果包含,求出子串的所有出现位置.。字符串和子串均由用户输入
如:"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
(也是少了一个位置是不是?)
好了,就到这里结束了。想要直接复制我代码自己尝试运行的,别忘了创建类的名字要和我代码的相同,还有一个就是,直接复制,慕课网默认是在代码里面加上作者信息,记得删除作者信息。代码报错了自己看一下有没有违背我说的这两个问题。我这里的代码是直接复制在编译器运行过的,代码不会有报错的地方
热门评论
网上出题者写的这段代码我看不懂,哪位大神能解释一下,就是这段: int i = str.indexOf(str1,stat) 这里的str1不是String类型吗?这里编译器为什么没报错?