我这里没有考虑空串问题:首先对输入的字符串进行替换,将若干个空格用一个空格替换掉,然后再用空格分割,这样也可以去掉空串。
方法一:把输入的数据先是用空格隔开,装入到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);
}
}
控制台如下: