题目链接:https://www.luogu.com.cn/problem/P1308
代码实例:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String word = scanner.nextLine();//这里同下
String text = scanner.nextLine();//重点,如果写成scanner.next()就会错误,因为只有nextLine()可以输入像空格、回车一样的字符
String[] datas = text.split(" ");//用分割函数将分割之后的串存到datas数组中
int count = 0;// 计数器
boolean flag = false;
int location = 0;// 表示在文章中第一次出现时,单词首字母在文章中的位置
for (int i = 0; i < datas.length; i++) {
if (datas[i].equalsIgnoreCase(word)) {
count++;
} else {
if (!flag) { // 如果已经出现了第一个单词,就不要再继续了
location += datas[i].length() + 1; // 如果遍历的单词不是,就把位置加好
}
}
//判断,计算位置,想测试的话可以把下面的注释打开
if (count == 1) {
flag = true;
}
}
if (count == 0) {
//如果单词在文章中没有出现,则直接输出一个整数-1
System.out.println(-1);
} else {
System.out.println(count + " " + location);
}
scanner.close();
}
}
总结:
Scanner.next()与Scanner.nextLine()的区别
1、next()方法在遇到有效字符前所遇到的空格、tab键、enter键都不能当作结束符,next()方法会自动将其去掉,只有当next()方法遇到有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符,所以next()不能得到带有空格的字符串,只能得到部分字符串(空格前面的)。
2、nextLine()方法的结束符是Enter键,即nextLine()方法返回的是Enter键之前的所有字符串,所以nextLine()方法可以获取到带有空格的字符串。
split()函数
小编不做详细介绍了,不懂的可以去查一下
如果想了解底层原理请看链接:https://blog.csdn.net/qq_43290288/article/details/97943548
equalsIgnoreCase()和equals()的区别
String a=“ABC”;
a.equals(“abc”)为false,
a.equalsIgnoreCase(“abc”)为true;
equalsIgnoreCase与equals区别是前者不区分大小写,而后者区分