EduCoder-Java面向对象(第四章)-String类 的实现代码 关卡二 substring()方法与indexOf()方法的使用 - 姓名查找

2. substring()方法与indexOf()方法的使用 - 姓名查找

任务描述
成为班长的小明最近好不忙,刚统计好了全班的花名册,班主任又交给了他一项任务。班主任的电脑不幸中了病毒,有一个文件变成了一堆乱码,但是班主任仔细查看了文件后发现,在这堆毫无意义的乱码中,还是有零散的班上同学的姓名穿插其中,现在班主任让小明将其位置找出来。

相关知识
substring()方法
在String类中有两个substring()方法,第一种如下:

String.substring(int start)
其中,start为要开始截取的位置的索引,方法将返回一个字符串,内容为原字符串从start位置开始到原字符串结束中间的数据。

例如:

String str = "hello word!";
System.out.println(str.substring(1));
System.out.println(str.substring(3));
System.out.println(str.substring(6));
执行以上代码,结果如下:

ello word!
lo word!
ord!

如果start大于字符串的长度,将会抛出越界异常。

第二种substring()方法:

String.substring(int start, int end)
其中,start为开始位置索引,end为结束为止索引,方法将返回一个字符串,内容为原字符串从start位置开始到end位置结束中间的数据。

例如:

String str = "hello word!";
System.out.println(str.substring(1, 4));
System.out.println(str.substring(3, 5));
System.out.println(str.substring(0, 4));

执行以上代码,结果如下:

ell
lo
hell

indexOf()方法
indexOf()方法用于在String类的对象中查找子字符串,方法返回一个整数值,为子字符串的开始位置,若存在多个子字符串,返回数值最小的整数值;如果没有找到子字符串,返回-1。请看示例:

String str = “abcdefghijklmnabc”;
System.out.println(str1.indexOf(“c”)); //结果为2,为字符"c"第一次出现的位置
System.out.println(str1.indexOf(“x”)); //结果为-1,没有找到字符"x"
编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

data变量为乱码文件的文本数据,由命令行读入;

name变量为需要查找的姓名,由命令行读入;

你将被要求输出若干行,每一行为查找到的姓名的位置。

评测说明
平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。

以下是测试样例:

测试输入:

我嗨李四各位哦给李四复位后发我肥沃李四放我访问后李樊红伟四分嚄嚄嚄范围李四佛为红包蓝色配个好玩李	
四

李四

预期输出:

2

8

17

35

47

笔者代码

package step2;

import java.util.Scanner;

public class NameSearch {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        /********** Begin *********/
		String data = scanner.next();
		String name = scanner.next();
		
		int j,k = 0;
    	for(int i = 0;i<data.length();){

			j = data.indexOf(name,i);

			if(j != -1){
				if(j != k) {
					System.out.println(j);
				}
        	}else {
            	break;
        	}
        	k=j;
        	i  = i+name.length();
		}	


        /********** End *********/
    }
}

直接cv即可通过,但笔者建议理解后自己实践

EduCoder-Java面向对象(第四章)-String类 的实现代码 关卡一 length()方法与compareTo()方法的使用 - 花名册
EduCoder-Java面向对象(第四章)-String类 的实现代码 关卡三 String串类操作练习 - 文件名与邮箱验证
EduCoder-Java面向对象(第四章)-String类 的实现代码 关卡四 StringBuffer类的定义和使用 - 字母反转

发布了12 篇原创文章 · 获赞 4 · 访问量 813

猜你喜欢

转载自blog.csdn.net/weixin_45791445/article/details/105417189