java实现统计字符串中包含的总词数,重复出现多次的一个词只算一次。

中间有空格,比如说:中国 人民 在 中国 这 片 土地 上 是 中国 人民。总词数只有8个,而不是11个。

package cn.com.test.model;

import java.util.ArrayList;
import java.util.List;

public class Test {
public static void main(String[] args) {
String a = "中国 人民 在 中国 这 片 土地 上 是 中国 人民";
// 打散字符串
char[] chs = a.toCharArray();
// 存储不重复的字符
List<String> finalList = new ArrayList<String>();
for (int i = 0; i < chs.length; i++) {
String b = String.valueOf(chs[i]);
// 判读是否已包含字符串
if (!finalList.contains(b))
finalList.add(b);
}
System.out.println(finalList.size());
}
}追问

思路是可以的,但是结果不对,每个词不能拆开,你的这个程序运行输出结果是12,正确结果应该是8个词。

追答

早说是根据空格隔开的啊

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-04-27
你的意思是 每个词之间是由空格隔开来的吗追问

对的,每个词之间都已经用空格隔开了。每个词不能拆开

追答    public static void main(String[] args) {
        String str = "中国 人民 在 中国 这 片 土地 上 是 中国 人民";
        String[] strArr = StringUtils.split(str, " ");
        Set<String> set = new HashSet<String>(strArr.length);
        for (int i = 0; i < strArr.length; i++) {
            set.add(strArr[i]);
        }
        System.out.println(set.toString());
        
        System.out.println(set.size());
    }

 另外 楼上之所以结果不对 是因为他把字符串转换为字符数组 这个步奏不对 他这么一转换 chs的长度就是27了 空格也是一个字符哦

本回答被提问者采纳

java怎么查询一个字符串中重复的字符,并且计算他出现的次数。
public static void main(String[] args) { \/\/ TODO Auto-generated method stub String str = "abcdabcdabcdabcd";String subStr = "abcd";int cursor = 0, subStrLen = subStr.length(), totalStrLen = str.length();int count = 0; \/\/ 表示重复字符的个数 while ((cursor + subStrLen...

用java写一个统计字符串中指定单词的个数
直接输出str.split(s).length-1就是单词的个数。原理就是字符串前后都加空格以后,再用你要查找的单词把字符串分成数组,数组元素的个数减1,就是单词的个数了。当然,首先要用contains() 方法判断一下字符串是否已经包含要找的单词。

java中怎么将字符串数组中的重复的元素去掉,但是还是保留一个。
import java.util.*;class BaiDu { public static void main(String[] args){ TreeSet<String> tr = new TreeSet<String>();String[] s ={"11","22","22","33","33","33"};System.out.print("===处理前===");for(int i=0;i<s.length;i++){ System.out.print(s[i]+" ...

JAVA 对于给定的一个字符串,统计其中数字字符出现的次数.
public class Util { public static void main(String[] args) { String[] arr = {"1","2","1","1"}; int num = 0,weizhi = 0; for(int i = 0; i < arr.length; i++){ if("1".trim().equals(arr[i])){ weizhi = weizhi+1; System.out.println(...

java编程:输入一个字符串,计算字符串中所包含的字母个数,数字个数,汉...
1.接收输入字符串2.分析字符串中每个字符的ASCII码,然后进行统计就好了

在JAVA中,编程统计用户从键盘输入的字符串中所包含的字母、数字和其他字...
告诉你一个思路,设定三个变量,分别代表数字,字母,其他字符。用输入流。每输入一个字符,判断这个字符的asc码,在多少到多少之间是字母,多少到多少是数字。每次判断一个,对应的变量+1,最后分别输出变量

用java编写一个函数,统计一个字符串中每个字母出现的次数,谢谢啦
import java.util.TreeMap;\/ 需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)分析:A:定义一个字符串(可以改进为键盘录入)B:定义一个TreeMap集合 键:Character 值:Integer C:把字符串转换为字符数组 D:遍历字符数组,得到每一个字符 E:拿刚才...

用java编程统计用户从键盘输入的字符串中所包含的字母,数字和其他字 ...
import java.util.Scanner;public class Test { public static void main(String [] args){ Scanner input = new Scanner(System.in); System.out.print("输入字符串:"); String strs = input.next(); int number = 0; int chara = 0; int other = 0; char [] chs = st...

如何用java实现统计文本中的字符数(分包含不包含空格)及将大写字母转换...
package javaTest;import java.io.*;public class CharTest { \/\/如何用java实现统计文本中的字符数(分包含不包含空格)\/\/及将大写字母转换为小写字母后复制到另一个文件 FileReader fr=null;FileWriter fw=null;BufferedReader br=null;BufferedWriter bw=null;String value=null;String value2="";int...

java 中 统计出 数组中 相同的数字 和字符串
首先,用java中的有序的Array,你根据自己需要重写compare方法,第一个问题就是按照数字的大小排序,第二就是按照字符个数排序(有序的Array在建立过程中已经正确排序了),这样就得到两个有序数组。第二,太简单了,自己思考吧。一个循环搞定,复杂度O(n)。排序复杂度也是O(n),所以这两个题复杂...

相似回答