查找一个字符串中每个单词的出现次数--Java,利用到了Map

我这里没有考虑空串问题:首先对输入的字符串进行替换,将若干个空格用一个空格替换掉,然后再用空格分割,这样也可以去掉空串。

方法一:把输入的数据先是用空格隔开,装入到list集合中,然后再循环重复,同时利用数组来计数,重复一次,加一次数,同时删除重复的项。

package 字符串.count;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;

public class CountWord {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str1 = null;

		str1 = sc.nextLine();
		sc.close();// 读取一行过后就关闭这个控制台键盘输入

		// System.out.println(str1);
		String[] split = str1.split(" ");

		List list = new ArrayList();
		// 把数组东西加入到List中,
		for (int i = 0; i < split.length; i++) {
			list.add(split[i]);
		}
		// System.out.println(list);
		// 去掉所有重复的,
		int[] n = new int[list.size()];
		for (int i = 0; i < list.size(); i++) {
			n[i] = 1;
		}
		for (int i = 0; i < list.size(); i++) {
			for (int j = i + 1; j < list.size(); j++) {
				if (list.get(i).equals(list.get(j))) {
					n[i]++;
					list.remove(j);
					j--;
				}
			}
		}
		// 下边是输出
		for (int i = 0; i < list.size(); i++) {
			System.out.print(n[i] + "个");
			System.out.print(list.get(i) + "    ");
		}

	}
}

方法二:创建一个Map,存放字符串和出现次数,对字符串数组中每一个处理过后的字符串,首先判断Map中是否有,没有则加入Map,有则使对应的次数+1. 

package 字符串.count;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class CountWord2 {
	public static void main(String[] args) {
		// 利用map中keyl来装单词,用value来计数
		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		sc.close();
		String[] shuzu = str.split(" ");
		int n = 1;
		Integer int1 = 0;
		Map<String, Integer> map = new HashMap<String, Integer>();
		for (int i = 0; i < shuzu.length; i++) {
			if (map.containsKey(shuzu[i])) {
				int1 = map.get(shuzu[i]);
				int1++;
				map.put(shuzu[i], int1);
			} else {
				map.put(shuzu[i], 1);
			}
		}
		System.out.println(map);
		
	}
}

控制台如下:

也是方法二:只是最后输出修改一点:

package 字符串.count;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class CountWord2 {
	public static void main(String[] args) {
		// 利用map中keyl来装单词,用value来计数
		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		sc.close();
		String[] shuzu = str.split(" ");
		int n = 1;
		Integer int1 = 0;
		Map<String, Integer> map = new HashMap<String, Integer>();
		for (int i = 0; i < shuzu.length; i++) {
			if (map.containsKey(shuzu[i])) {
				int1 = map.get(shuzu[i]);
				int1++;
				map.put(shuzu[i], int1);
			} else {
				map.put(shuzu[i], 1);
			}
		}
		for(String str2:map.keySet()){
			System.out.print("字符串"+str2+"出现的次数为:"+map.get(str2)+"  ");
		}
//		System.out.println(map.keySet());
//		System.out.println(map);
		
	}
}

控制台如下:

猜你喜欢

转载自blog.csdn.net/Handsome2013/article/details/81188443