论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
Java实现英语作文单词扫盲程序
Java实现英语作文单词扫盲程序
北冰洋以北
论坛元老
|
2024-9-10 19:26:59
|
显示全部楼层
|
阅读模式
楼主
主题
2025
|
帖子
2025
|
积分
6075
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
来自背英语四级单词的突发奇想:
是否可以通过Java语言实现一个随机抽取作文中单词进行复习的程序。
成果展示:
点击查察代码
package Demo;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class random_words {
public static void main(String[] args) {
//导入英语作文数据
String data = "***英语文章数据abcdefg***";
ArrayList<String> list = new ArrayList<>();//存储所有长度大于3的单词
ArrayList<String> doneList = new ArrayList<>();//存储已出现的单词
Random r = new Random();
Scanner sc = new Scanner(System.in);
// 按空格和标点符号分割字符串
String[] words = data.split("[\\p{Punct}\\s+]");
// 长度大于3的单词并加入列表
for (String word : words){
if (word.length()>3 && !word.isEmpty()) { //长度大于3 且 不为空
list.add(word);
}
}
//生成5个不重复的单词
boolean choose = true;//控制循环
while(choose && list.size()>doneList.size()){
ArrayList<String> nowList= new ArrayList<>();//用于存储生成的5个单词
while (nowList.size()<5 && list.size()> doneList.size()){
int n = r.nextInt(list.size());
String randomWords = list.get(n);
//检查该组单词是否重复
if (!nowList.contains(randomWords) && !doneList.contains(randomWords)) {
nowList.add(randomWords);
doneList.add(randomWords);
}
}
//输出生成的单词
System.out.println("请复习:");
for (String word:nowList) {
System.out.println(word);
}
//检查剩余单词数量是否不足5个
if (doneList.size()< list.size()) {
System.out.println("是否继续复习(y/n)");
String userChick = sc.nextLine();
if (!userChick.equalsIgnoreCase("y")) {
choose = false;
}
}else{
for (String word:list) {
if (!doneList.contains(word)) {
System.out.println(word);
}
}
break;
}
}
System.out.println("当前单词已复习完,请换下一篇");
sc.close();
}
}
复制代码
使用说明:
将一篇英文文章放入data数据中运行即可。
程序运行逻辑:
随机抽取文章中超过4位字母的英文单词,每五个单词为一组,根据程序提示(y/n)?输入“y”即可继续复习下一组单词,相反输入“n”结束程序。当文章剩余单词凑不出5个单词/组的要求时,直接输出剩余单词。
实现过程以及涉及知识扫盲(写给自己看的):
开端构想只思量了分割单词,从中随机抽取一个单词进行复习。发现,一次只复习一个单词速率太慢并且出现的单词为介词,对于英语复习无用。
办理:
加一个while循环,每5个单词为一组;排除4个字母一下的单词,加一个ArrayList集合(list)用于存储全部长度大于3个字母的单词。
代码:
点击查察代码
ArrayList<String> list = new ArrayList<>();//存储所有长度大于3的单词
while(choose && list.size()>doneList.size()){
ArrayList<String> nowList= new ArrayList<>();//用于存储生成的5个单词
while (nowList.size()<5 && list.size()> doneList.size()){
int n = r.nextInt(list.size());
String randomWords = list.get(n);
复制代码
完成后发现,在固定文档中随机生成的多个数据具有重复性和存在末了集合剩余单词不足5个的环境。
办理:
添加集合,在已存在的list集合基础上添加ArrayList(doneList):已生成的单词和ArrayList(NowList):正生成5个单词,用于办理重复性问题。
代码:
点击查察代码
ArrayList<String> doneList = new ArrayList<>();//存储已出现的单词
ArrayList<String> nowList= new ArrayList<>();//用于存储生成的5个单词
复制代码
随机生成5个单词,查抄随机生成单词是否在doneList集合和nowList集合中重复。
代码:
点击查察代码
if (!nowList.contains(randomWords) && !doneList.contains(randomWords)) {
nowList.add(randomWords);
doneList.add(randomWords);
}
复制代码
设置choose控制程序,初始值为true。如果doneList小于list,扣问是否继续(y/n)?用户选择“Y”,打印下一组单词,剩余单词不足5个直接打印;选择“N”,返回choose值为false,结束程序运行。
代码:
点击查察代码
if (doneList.size()< list.size()) {
System.out.println("是否继续复习(y/n)");
String userChick = sc.nextLine();
if (!userChick.equalsIgnoreCase("y")) {
choose = false;
}
}else{
for (String word:list) {
if (!doneList.contains(word)) {
System.out.println(word);
}
}
break;
}
复制代码
对此程序的畅想:
优化逻辑,使用更加轻巧的方法
通过文件I/O实现英文文章以文件情势导入
编写前端页面,实现前后端分离,上传服务器,便捷使用
@andmin_tai菜鸟原创
敬请斧正!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
北冰洋以北
论坛元老
这个人很懒什么都没写!
楼主热帖
一零零七、Docker快速入门
Linux基础篇(6)---》常用命令大全(网络 ...
超融合,变了?
鸿蒙最新功能及承载设备详解:HarmonyO ...
作为开发人员,您应该熟悉的 7 个 Java ...
如何快速而优雅的解决问题(提问的智慧 ...
代码审计(Java)——WebGoat_Authentica ...
Kubernetes-namespace
kubernetes之Ingress发布Dashboard(二) ...
零代码,让业务人员实现应用创造自由 ...
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表