Java 洛谷 P1308 统计单词数

Java 洛谷 P1308 统计单词数_第1张图片

Java 洛谷 P1308 统计单词数_第2张图片

题目链接:https://www.luogu.com.cn/problem/P1308Java 洛谷 P1308 统计单词数_第3张图片
代码实例:
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区别是前者不区分大小写,而后者区分

你可能感兴趣的:(洛谷每日编程,Java洛谷P1308,P1308统计单词数,JavaP1308统计单词数,Java洛谷统计单词数,洛谷P1308统计单词数)