HJ84 统计大写字母个数
法一
import java.util.*;
public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);while (input.hasNextLine()) {String find = input.nextLine();System.out.println(count(find));}}public static int count(String str) {char[] cs = str.toCharArray();int num = 0;for (char c : cs) {if (c >= 'A' && c <= 'Z') {num++;}}return num;}
}
法二
import java.util.*;public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);while (input.hasNextLine()) {String s = input.nextLine();String sNew = s.replaceAll("[A-Z]+", "");System.out.println(s.length() - sNew.length());}}
}
小知识:
我在这题上还尝试了一下,如果在输入的时候选择
sc.hasNextLine()
而不是
sc.hasNext()
并把输入的字符串弄成两行,就会发现,结果会输出两行,也就是意味着,hasNextLine()能够正确检测到回车的作用,而如果输入的是两行,但是接收用的是hasNext(),那就会直接报错。
知识点:
正则表达式
- runoo+b
可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。
- runoo*b
可以匹配 runob、runoob、runoooooob 等,* 号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。
- colou?r
可以匹配 color 或者 colour,? 问号代表前面的字符最多只可以出现一次(0次或1次)。
法三
import java.util.*;public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);while (input.hasNextLine()) {String str = input.nextLine();int count = 0;for (int i = 0 ; i < str.length() ; i++) {if (Character.isUpperCase(str.charAt(i))) {count++;}}System.out.println(count);}input.close();}
}