一、题目
从键盘输入一个英文句子,统计该句子中的英文单词个数,并找出所有单词存放到一个数组中。同时,输出该句子中的不同单词和重复单词以及它们的个数。

二、实验代码

package fighting;
import java.util.Scanner;
import java.util.HashSet;
public class fighting
{public static void main(String[] args)         {System.out.println("请输入英文句子:");Scanner sc=new Scanner(System.in);String str=sc.nextLine();StringBuffer str1=new StringBuffer();//StringBuffer为可变字符串for(int i=0;i<str.length();i++){if(str.charAt(i)>='a'&&str.charAt(i)<='z'||str.charAt(i)>='A'&&str.charAt(i)<='Z')//判断英文单词,若连续若干字母即为一个英文单词,将其作为单词组成部分放入StringBuffer中{str1.append(str.charAt(i));}else//将单词用逗号隔开{str1.append(",");}}String[] str2=str1.toString().split(",");//先利用toString将StringBuffer转换为String类对象,再利用split方法按逗号将其分开存入数组System.out.println("该句子一共有"+str2.length+"个单词");System.out.println("-----------------------------");for(int n=0;n<str2.length;n++)//遍历输出句子单词{System.out.print(str2[n]+" ");}System.out.println();System.out.println("-----------------------------");HashSet<String> repeatedwords=new HashSet<String>();//用来存放重复单词集合HashSet<String> unrepeatedwords=new HashSet<String>();//用来存放不重复单词集合for(String token:str2)//增强型for循环,语法格式为for(集合内储存类型 变量名 : 集合变量名),定义一个String型变量token, 每次从数组str2里取一个元素付给变量token,直到把str2里的所有元素都处理完.{if(!unrepeatedwords.add(token))repeatedwords.add(token);//因为Set分支的特点是无序且不可重复,因此通过add方法添加相同的值时,第一次返回为true,后面再加相同元素的话就会返回false,因为元素重复}System.out.println("该句子不同的单词有"+unrepeatedwords.size()+"个  "+unrepeatedwords);//size()获取集合长度System.out.println("-----------------------------");System.out.println("该句子重复的单词有"+repeatedwords.size()+"个  "+repeatedwords);}
}

三、运行结果

四、实验总结
1、HashSet是set接口的实现类,是我们最常用的set集合,其储存的是无序,唯一的对象。因为是无序的所以每组数据都没有索引,凡是需要通过索引来进行操作的方法都没有,因此也不能使用普通for循环来进行遍历,只有增强型for和迭代器两种遍历方法
(1)增强型for循环的语法格式为:for(集合内储存类型 变量名 : 集合变量名),增强for循环只能用在数组或实现Interable接口的集合类上,增强型for循环只适合取数据,不会更改数据,如对更改数据有要求需要使用传统for循环方式。

HashSet<String> map=new HashSet<String>();map.add("hard");map.add("coder");for(String str:map)System.out.println(str+" ");//控制台显示的是coder harder(因为set无序)

(2)迭代器Iterator主要是提供一种方法对一个容器对象中的各个元素进行访问,其包含三个方法:hasNext,next和remove。Iterator可用来遍历Set和List集合,且只能是前向遍历。

public interface Iterator<E> {boolean hasNext(); //每次next()之前,先调用此方法探测是否迭代到终点,即判断是否存在下一个对象元素E next(); //返回当前迭代元素同时迭代游标后移,即获取下一个元素void remove() //删除最近一次已近迭代出出去的那个元素,只有当next执行完后,才能调用remove函数。比如要删除第一个元素,不能直接调用 remove() 而要先next一下( ); 在没有先调用next(0)就调用remove方法是会抛出异常{throw new UnsupportedOperationException("remove");}
}
HashSet<String> set=new HashSet<String>();set.add("aa");set.add("bb");set.add("coder");set.add("harder");for(Iterator<String> iter=set.iterator();iter.hasNext();){String temp=iter.next();System.out.print(temp+" ");//控制台显示aa bb coder harder }

2、HashSet的五种方法:add(set)用来增加元素,remove(set)用来移除元素,contains(set)用来对比查找元素,clear()用来清空集合元素,size()用来获取集合长度。因为Set分支的特点是无序且不可重复,因此通过add方法添加相同的值时,第一次返回为true,后面再加相同元素的话就会返回false,因为元素重复,这一点值得注意。
3、使用HashSet和Iterator需要导包,否则会报错:HashSet cannot be resolved to a type和Iterator cannot be resolved to a type。

import java.util.HashSet;
import java.util.Iterator;

Java编程之统计英文句子中单词个数、不同单词和重复单词个数相关推荐

  1. java 单词出现次数_Java统计英文句子中出现次数最多的单词并计算出现次数的方法...

    搜索热词 本文实例讲述了Java统计英文句子中出现次数最多的单词并计算出现次数的方法.分享给大家供大家参考,具体如下: import java.util.*; /** * 统计出现次数最多的单词和它出 ...

  2. java统计每个单词单词出现的次数_Java统计英文句子中出现次数最多的单词并计算出现次数的方法...

    本文实例讲述了Java统计英文句子中出现次数最多的单词并计算出现次数的方法.分享给大家供大家参考,具体如下: import java.util.*; /** * 统计出现次数最多的单词和它出现的次数 ...

  3. python输入一个英文句子、统计单词个数_C语言编程求一个英文句子中的单词数和最长单词的位置、长度及输出这个单词。c++编程 从键盘输入一个英文...

    C语言编程求一个英文句子中的单词数和最长单词的位置.长度及输出这个单词. c++编程 从键盘输入一个英文 www.zhiqu.org     时间: 2020-11-23 我刚做了一关于英文句子里面每 ...

  4. 统计英文句子中的单词个数,并且输出每个单词

    package new_test; import java.util.Scanner; import java.util.StringTokenizer; //任务:统计英文句子中的单词个数,并且输出 ...

  5. 统计英文句子中字母个数(c++)

    编写一个函数,统计一条英语句子中字母的个数,在主程序中实现输入输出. #include <iostream> #include <String> using namespace ...

  6. Python——组合数据类型的应用_1.英文句子中的词频统计

    词频统计需要考虑下列几个问题: 英文单词的分隔符可以是空格.标点符号或者特殊符号,使用字符串的 replace()方法可以将标点符号替换为空格,以提高获取单词的准确性. 用 split()函数可以拆分 ...

  7. 统计一个英文句子中包含2个a的单词有几个,并将两个a替换为星号,不能用count函数...

    统计一个英文句子中包含2个a的单词有几个,并将两个a替换为星号,不能用count函数 def count(s,x): if (not isinstance(s,str)) or (not isinst ...

  8. java句子倒序_Java实现英文句子中的单词顺序逆序输出的方法

    摘要:这篇Java开发技术栏目下的"Java实现英文句子中的单词顺序逆序输出的方法",介绍的技术点是"逆序输出.单词顺序.英文句子.Java.实现.方法",希望 ...

  9. C语言反序输出英文句子,C++实现英文句子中的单词逆序输出的方法

    本文实例讲述了C++实现英文句子中的单词逆序输出的方法.分享给大家供大家参考,具体如下: #include "stdafx.h" #include #include #includ ...

最新文章

  1. hdu 1054 Strategic Game 二分图最小点覆盖
  2. FIR基本型仿真_03
  3. gradle下bug修正后问题仍存在解决思路
  4. Spring Cloud微服务之网关服务创建(十四)完结篇
  5. Java 笔试强训 牛客网选择编程题 01
  6. 东大oj-1591 Circle of friends
  7. linux内核主频,Linux 内核时钟频率对系统性能影响
  8. C++设计模式::装饰模式or代理模式or面向切片编程(AOP)
  9. 研发中,问题以界面开发人员为解决负责人
  10. python贪吃蛇手机版代码_200行python代码实现贪吃蛇游戏
  11. 给不懂技术的妹子,说清楚单列模式
  12. Error writing to registry key: RegSetValueEx failed; code 5
  13. CS入门学习笔记14-MIT 6.00.1x- Lecture 12 Object Oriented Programming (Class Generator
  14. Blender程序化建模简明教程【PCG】
  15. 【读后感】《关键对话》
  16. Oracle GoldenGate for MySQL部署踩的坑
  17. 职业推手自曝微博炒作内幕 十万水军任你调遣!
  18. 磁盘分析管理软件:Disk Space Analyzer Pro mac版
  19. 展现AI与自动化测试技术之间的神奇化学反应
  20. 在SQL Server 2000中设置OPTION (MAXDOP 1) 性能提高问题

热门文章

  1. acrobat pro dc 2019.010.20064 for mac激活版
  2. 银灰的拳击机器人_iRobot 861扫地机器人正面外观_iRobot Roomba 861_家电小家电-中关村在线...
  3. 命令行使用java运行程序报错:Could not find or load main class
  4. javascript实现禁止右键和F12查看源代码
  5. quill自定义清除格式功能,选中内容清除格式
  6. HCIP-AI语音处理理论、应用
  7. 折半查找判定树——(快速判断某棵树是否为折半查找判定树)
  8. 拿到了摩根斯坦利IT部门offer(2018 Morgan Stanley Technology Summer Analyst)
  9. 良精cms php版漏洞,南方数据、良精系统、网软天下漏洞利用
  10. 记录第一天工作--Java时间类型转换:Date转换为时间戳