统计字母出现的次数

来源:互联网 发布:cpda数据分析师含金量 编辑:程序博客网 时间:2024/05/01 06:19

题目:最简单、最原始的。统计某个指定字母(例如 f 或 F )在字符串中出现的次数。

import java.util.Scanner;public class SingleLetter {public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("输入一个字符串。");String str = in.next();System.out.println("输入你要查找的一个字母");char letter = in.next().charAt(0);int count = 0;for(int i = 0; i < str.length(); i++){char c = str.charAt(i);if(c == letter)count++;}System.out.println(letter + " 字母在字符串中出现了 " + count + " 次");}}


变式1:统计多个字符(如 a, e, i, o, u )共出现的次数

方法一:用正则表达式

import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;public class VowelTest {public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("请输入一串字符串。");String str = in.next();Pattern vowel = Pattern.compile("[aeiou]");Matcher m = vowel.matcher(str);int count = 0;while(m.find()){count++;}System.out.println("元音字母共有 " + count + " 个。");}}
方法二:简单逻辑判断

import java.util.Scanner;public class VowelTest1 {public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("请输入一串字符串。");String str = in.next();int count = 0;for(int i = 0; i < str.length(); i++){char c = str.charAt(i);if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u')count++;}System.out.println("元音字母共有 " + count + " 个。");}}

变式2:随机生成字母,并统计每个字母出现的次数

public class LettersCount {public static void main(String[] args) {char[] letters = createArrays();System.out.println("输出生成的随机字符:");outputArrays(letters);int[] lettersCount = lettersCount(letters);System.out.println("输出统计好字母次数的数组:");outputCountArrays(lettersCount);}//格式化输出统计好字母次数的数组private static void outputCountArrays(int[] lettersCount) {// TODO Auto-generated method stubfor(int i = 0; i < lettersCount.length; i++){if((i + 1) % 5 == 0)System.out.println((char)(i + 'a') + " -- " + lettersCount[i]);elseSystem.out.print((char)(i + 'a') + " -- " + lettersCount[i] + "  ");}}//对出现的字母统计private static int[] lettersCount(char[] letters) {// TODO Auto-generated method stubint[] count = new int[26]; for(int i = 0; i < letters.length; i++){count[letters[i] - 'a'] ++;}return count;}//格式化输出随机生成的字母数组private static void outputArrays(char[] letters) {// TODO Auto-generated method stubfor(int i = 0; i < letters.length; i++){if(((i + 1) % 20) == 0)System.out.println(letters[i]);elseSystem.out.print(letters[i] + "  ");}}//随机生成 100 个小写字母private static char[] createArrays() {// TODO Auto-generated method stubchar[] chars = new char[100];for(int i = 0; i < 100; i++)chars[i] = (char)(Math.random() * 26 + 'a');return chars;}}

变式3:统计某个单词出现的次数

import java.util.HashMap;import java.util.Scanner;public class SingleWordCount {public static void main(String[] args) {String str = "I have a apple, I have a pen.";String[] word = str.split("[,\n\t\r;.:!?(){ ]");Scanner in = new Scanner(System.in);System.out.println("输入一个你想查找的单词。");String s = in.next();int sCount = 0;for(int i = 0; i < word.length; i++){if(word[i].equals(s))sCount++;}System.out.println(s + " 在字符串中有 " + sCount + "个。");}}

变式4:统计字符串(文件)中每个单词出现的次数。

import java.util.HashMap;public class WordsCount {public static void main(String[] args) {String sentence = "I have an apple, you have an apple. After exchange, " + "we only have one apple.\nif I have an idea, and you too. After exchange, " + " we'll have two ideas.";System.out.println(sentence);System.out.println("统计结果如下:");System.out.println(wordsCount(sentence));}private static String wordsCount(String sentence) {// TODO Auto-generated method stubString[] words = sentence.split("[ ,.:;!?\n\t\r(){]");//新建一个 HashMapHashMap<String, Integer> hashMap = new HashMap<String, Integer>();for(int i = 0; i < words.length; i++){/*//方法一if(hashMap.containsKey(words[i]))hashMap.put(words[i], hashMap.get(words[i]) + 1);elsehashMap.put(words[i], 1);*///方法二if(hashMap.get(words[i]) == null)hashMap.put(words[i], 1);//如果 hashMap 中没有那个单词,设定值为 1else//如果 hashMap 中有这个单词,则将该单词的值加 1hashMap.put(words[i], hashMap.get(words[i]) + 1);}return hashMap.toString();}}
使用了 map 中的键(单词)值(出现次数)对。

0 0
原创粉丝点击