背单词软件技术笔记(V1.0核心版及V2.0随机挖字母)

V1.0:

准备数据: 找到 单词与翻译的对照数据 存入到文件中

在程序中读取文件中的数据

V2.0:

1: 随机抽取单词,去掉其中某个字母,要求用户输入这个字母填空

2:给出中文翻译,输入单词 实现拼写

3:抽取单词,给出4个选项 要求选择

一、核心目标

做一个能读取单词文件、随机抽单词让用户填缺失字母的简单背单词程序,全程用基础Java语法,无复杂逻辑。

二、代码编写步骤

第一步:导入必要的工具类

先告诉程序要用到的"辅助工具",比如读取输入、生成随机数、操作文件等。

java 复制代码
  
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

第二步:创建程序主类

所有代码都放在这个"容器"里,类名固定为 WordsDemo 。

java 复制代码
  
public class WordsDemo {
    public static void main(String[] args) {
        // 下面的代码都写在这里面
    }
}

第三步:初始化工具和存储容器

在 main 方法里,先准备好要用到的"工具"和存单词的"盒子"。

java 复制代码
  
// 1. 键盘输入工具(接收用户答案)
Scanner sc = new Scanner(System.in);
// 2. 随机数工具(随机抽单词、随机挖字母)
Random ran = new Random();
// 3. 存英文单词的盒子(动态扩容,多少单词都能装)
ArrayList<String> words = new ArrayList<>();
// 4. 存中文翻译的盒子(和英文单词一一对应)
ArrayList<String> chineseWords = new ArrayList<>();

第四步:让用户选择单词表(CET4/CET6)

让用户输入编号,程序对应找到要读取的单词文件。

java 复制代码
  
System.out.println("请选择单词表编号:");
System.out.println("=====1001-CET4=====");
System.out.println("=====1002-CET6=====");
int num = sc.nextInt(); // 接收用户输入的编号
String wordsLib = ""; // 存储单词文件的路径

// 根据编号选择文件
if (num == 1001) {
    wordsLib = "wordslib/CET4.txt";
} else if (num == 1002) {
    wordsLib = "wordslib/CET6.txt";
} else {
    System.out.println("编号错误,默认使用CET4单词表~");
    wordsLib = "wordslib/CET4.txt";
}

第五步:读取单词文件的数据

把文件里的英文和中文对应存到前面准备的"盒子"里。

java 复制代码
  
// 1. 找到对应的单词文件
File file = new File(wordsLib);

try {
    // 2. 准备文件读取工具(缓冲读取,更快更方便)
    FileReader fr = new FileReader(file);
    BufferedReader br = new BufferedReader(fr);

    // 3. 一行一行读文件,直到读完
    String line;
    while ((line = br.readLine()) != null) {
        // 按"#"拆分,左边是英文,右边是中文
        String[] strs = line.split("#");
        String eng = strs[0];
        String chinese = strs[1];

        // 把拆分后的单词和翻译存到盒子里
        words.add(eng);
        chineseWords.add(chinese);
    }

    // 4. 关闭读取工具(用完要关掉,节省资源)
    br.close();
    fr.close();

} catch (FileNotFoundException e) {
    // 找不到文件时提示
    System.out.println("单词文件找不到,请检查路径是否正确!");
} catch (IOException e) {
    // 读取文件出错时提示
    System.out.println("读取单词文件失败!");
}

第六步:核心刷题逻辑(随机挖字母,用户填空)

循环抽单词、挖字母,直到用户手动关闭程序。

java 复制代码
  
// 先获取单词总数(盒子里有多少个单词)
int wordCount = words.size();

// 循环刷题(一直刷,直到关闭程序)
while (true) {
    // 1. 随机选一个单词(从0到单词总数-1选一个索引)
    int randomWordIndex = ran.nextInt(wordCount);
    String selectedWord = words.get(randomWordIndex); // 选中的英文单词
    String selectedChinese = chineseWords.get(randomWordIndex); // 对应的中文翻译

    // 2. 随机挖掉一个字母(从单词的字母中选一个索引)
    int wordLength = selectedWord.length();
    int randomCharIndex = ran.nextInt(wordLength);
    char correctChar = selectedWord.charAt(randomCharIndex); // 被挖掉的正确字母

    // 3. 构造带"_"的单词(比如hello挖掉第2个字母变成he_lo)
    String frontPart = selectedWord.substring(0, randomCharIndex); // 挖掉字母前面的部分
    String backPart = selectedWord.substring(randomCharIndex + 1); // 挖掉字母后面的部分
    String wordWithBlank = frontPart + "_" + backPart; // 带空白的单词

    // 4. 提示用户答题
    System.out.println("\n请猜出单词中缺失的字母:" + wordWithBlank);
    String userInput = sc.next(); // 接收用户输入的字母

    // 5. 判断用户答案是否正确(只取用户输入的第一个字符,避免输入多个字符)
    char userChar = userInput.charAt(0);
    if (userChar == correctChar) {
        // 答对了,显示完整单词和翻译
        System.out.println("正确!完整单词:" + selectedWord + ",中文翻译:" + selectedChinese);
    } else {
        // 答错了,提示重新输入(直到答对再换下一个单词)
        while (userChar != correctChar) {
            System.out.println("错误!请重新输入:");
            userInput = sc.next();
            userChar = userInput.charAt(0);
        }
        System.out.println("终于对啦!完整单词:" + selectedWord + ",中文翻译:" + selectedChinese);
    }
}

三、运行说明

  1. 运行程序后,输入1001或1002选择单词表。
  2. 按照提示填缺失的字母,答对换词,答错可以重新输入。
  3. 想退出程序时,直接关闭运行窗口即可。

四、关键知识点

  1. ArrayList :动态数组,像可伸缩的盒子,能装任意多个单词,不用提前确定长度。
  2. BufferedReader :文件读取工具,能一行一行读文件,比单个字符读效率高。
  3. Random :随机数工具, nextInt(n) 生成0到n-1的随机数,用来选单词和挖字母。
  4. try-catch :异常处理,文件找不到、读错时不会让程序崩溃,还会给出提示。
相关推荐
晓幂6 小时前
【2025】HECTF
笔记·学习·web安全
做cv的小昊7 小时前
【TJU】信息检索与分析课程笔记和练习(8)(9)发现系统和全文获取、专利与知识产权基本知识
大数据·笔记·学习·全文检索·信息检索
hkNaruto8 小时前
【AI】AI学习笔记:MCP协议与gRPC、OpenAPI的差异
人工智能·笔记·学习
九成宫9 小时前
计算机网络期末复习——第2章:应用层 Part One
笔记·计算机网络·软件工程
半夏知半秋9 小时前
rust学习-闭包
开发语言·笔记·后端·学习·rust
你喜欢喝可乐吗?9 小时前
FastAPI 入门笔记
笔记·fastapi
hkNaruto11 小时前
【AI】AI学习笔记:A2A(智能体协作)入门指南:从概念到实践
人工智能·笔记·学习
yj_sharing11 小时前
动手学深度学习softmax回归的笔记
笔记·深度学习·回归
暖暖木头11 小时前
playwright学习笔记
笔记·学习
hetao173383711 小时前
2026-01-06 hetao1733837 的刷题笔记
c++·笔记·算法