课程 在 Java 技能树

Java 编程练习

通过 200+ 个动手编程挑战练习 Java 编程。非常适合初学者通过涵盖数据结构、算法、面向对象编程(OOP)和核心 Java 概念的实际项目提升技能。

Java

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

大纲

访问链表(LinkedList)中的元素

访问 HashMap 的元素

从另一个类访问静态属性

检查字符串是否相等

创建带索引的链表

查找学生成绩的最低分和最高分

实现双端队列(Deque)数据结构

使用参数实现 Lambda 表达式

实现多级继承

从 ArrayList 中移除第二个元素

按升序排列玩家年龄

类方法检索器信息

线程的并发执行

统计字符出现次数

自定义正则表达式

票务系统中的数据共享问题

多个接口中的默认方法

绘制几何形状

从四分之一到 0

手动实现队列

用于数据操作的 Lambda 表达式

矩阵元素信息打印

移除重复数字

为景区门票设定价格

兄弟分钱游戏

模拟图书馆

使用异常处理解决苹果分配问题

使用 HashSet 存储数据信息

大数字求和

三位数各位数字之和

唯一的神

Stream 的使用

验证身份证号码

简单的 Java 打印语句

实现加密和解密

访问和修改学生姓名

访问父类(superclass)的被重写方法

访问类中的静态属性

访问父类(超类)构造函数

向 ArrayList 中添加元素

在特定索引位置向 ArrayList 中添加元素

使用抽象的面积计算程序

使用体重和身高计算 BMI

根据边长计算立方体体积

根据薪资计算员工奖金

根据本金计算利息

计算球员的平均身高

使用数组计算百分比

使用类计算矩形面积

计算矩形尺寸

计算数位之和

计算一个数的阶乘

计算两个三角形的面积

计算一个数的幂

在 Java 中计算标准差

计算自然数之和

计算圆的面积

计算正方形的面积

两次调用方法

检查通过、未通过或无效成绩

使用 Java 检查冰热温度

比较数组的第一个和最后一个元素

持续计算输入数字的总和

使用 Java 进行公里和英里的转换

统计字符串中的元音字母数量

统计整数的位数

统计字符 'a' 的出现次数

创建一个计算器程序

创建枚举类 - Size

创建动物 - 狗的继承体系

确定一个数的因数

从输入中确定较长的字符串

确定学生间的最大握手次数

确定学生成绩等级

判断两个参数是否相等

判断数字奇偶性

在 Java 中判断哈沙德数

判断一个数字是否为阿姆斯特朗数

判断质数状态

给孩子们分配巧克力

封装员工工资管理

枚举常量转换为字符串

从数字中排除 3 的倍数

华氏温度转摄氏温度程序

找出两个哈希集之间的差异

找出两个 HashSet 的交集

找出小于 100 的最大倍数

查找数组中的最小元素

找出年龄最小的弟弟

在 ArrayList 中寻找尼莫

在区间内查找质数

找出两个数的最大公约数

寻找最小公倍数

FizzBuzz 程序:用户输入说明

使用循环生成乘法表

除自身外的最大因数

识别自除数

使用 Java 识别过剩数

实现接口以计算正方形面积

使用 LinkedList 实现队列

不同参数的方法重载

使用不同参数类型的方法重载

修改 HashMap 中的元素

使用 Java 修改 ArrayList

多类方法重写

多个类继承一个类

将数组元素乘以 10

重载 final 方法演示

重写父类方法

回文数检查

执行复数加法运算

磅到千克的转换程序

基本数据类型转换为包装类

打印任何类型的数据

打印数组中的偶数

打印非字母字符

打印任意数据类型的值

打印数组元素

打印字符串中的单个字符

打印句子三次

从 HashMap 中移除元素

反转数字程序

商店盈利/亏损计算器

单利计算程序

字符串拼接:合并两个文本

字符串转换:首字母大写

坐标相减

使用临时变量交换两个数字

有效的三角形内角

验证闰年条件

使用 Java 验证数字是否为质数

验证类实例

投票资格判定程序

飞机对战游戏

外星细胞分裂

任意半径圆的面积

汽车销售市场

银行账户程序

百花争艳

构建并部署 Spring Boot

名片分发

凯撒密码加密

计算正方体的体积

计算圆柱体的体积

聊天室模拟

班级成绩排名

类的属性和方法

按词性对单词进行分类

鸡兔同笼

配置文件内容

使用注解配置类参数

计算子字符串的出现次数

定义你的注解

图形界面的设计与实现

多个接口的设计与实现

判断飞船返回可行性

使用异常处理判断三角形可行性

哲学家就餐同步问题

使用迭代器显示数据信息

使用异常处理解决分苹果问题

高效学生成绩分析程序

输入学生信息

用于性别信息的枚举类

斐波那契数列编程

文件内容过滤

基于 UDP 协议的文件上传

满足多需求的流控制语句

趣味代码补全

从 Google 主页获取信息

处理错误成绩

使用 Java 输出 Hello LabEx

每个月有多少天

实现倒计时计时器线程

实现一个股票类

实现帕斯卡三角

实现字符串分割

实现字符串工具类

智能护理呼叫服务

链表的交集

Java 工程师月薪计算

孔融让梨

使用 Java 模拟斗地主游戏

韦恩发射自动高度计算

日志信息分类

一见钟情

使用动态规划最大化飞行棋得分

最大化飞机摧毁策略

三个数字的最大值

使用继承修改武器设计

水仙花数判断

使用 Java 数组穿越太空桥

No Money Jewelry Store 营销活动

回文数的数量

女娲造人

获取不同类的 Class 对象

使用方法引用进行操作

弹簧购买的最优硬币选择

优化线程接力赛模拟

输出一个三角形

输出书籍信息

使用 DOM 解析 XML 数据信息

点在三角形内

生产者 - 消费者队列实现

反射创建一个 Person 对象

使用 finally 释放 Scanner 资源

通过条件执行拯救公主

在 Java 中反转一维数组

反转输出单词列表

反转英文句子中的单词顺序

重写 equals 方法

三组数据交替运行

使用 SAX 解析 XML 数据

在二维数组中搜索

Servlet 用户信息查询

简单学生管理系统

模拟大学管理系统

宇宙飞船速度控制

大人,饶命啊

树的螺旋遍历

爬楼梯与余额预测

使用 TreeSet 存储数据信息

累积法力量训练

String 类构造函数

字符串信息统计

String 类方法

学生管理系统

学生成绩排名系统

子字符串出现次数统计

召唤精灵游戏玩法

神奇口袋

隔墙有耳

流浪地球

五美分的愿望

理解 Java 常量池

使用异常进行用户注册验证

使用继承来节省代码

我何时能攒够钱

将对象写入文件

阴阳

简介

通过 239 个动手编程挑战强化 Java 问题解决能力。这套资源从短小的语法和算术练习,一直延伸到数据结构、面向对象设计、文件、函数式 API、并发、网络和部分应用技术。

它是非线性的练习库,而不是单一引导路径。你可以选择与当前学习主题匹配的任务、反复补强薄弱点,或从小型控制台程序逐步进入更专门的练习,无需按顺序完成所有挑战。

你将学到什么

完成课程中相关挑战后,你将能够:

  • 在小型程序中应用输入、运算符、条件、循环、方法、数组、矩阵、字符串和数值类型。
  • 解决计算、数字性质、序列、搜索、排序、文本处理和遍历问题。
  • 构建并操作 ArrayList、LinkedList、queue、deque、map、set、iterator 和自定义数据结构。
  • 使用 class、encapsulation、inheritance、abstraction、interface、overloading、overriding、enum 和 generic 建模行为。
  • 在聚焦任务中使用 lambda、method reference、stream、annotation、reflection 和 regular expression。
  • 处理 exception,并操作文本文件、对象 serialization、配置数据以及 DOM 或 SAX XML parsing。
  • 通过共享状态、synchronization、producer-consumer queue 和经典并发练习协调 thread。
  • 通过独立 GUI、UDP networking、servlet、HTTP 与 Spring Boot 情境扩展 core Java 之外的经验。

本课程适合谁

本课程适合已经掌握 Java 基础语法、希望获得大量独立练习的学习者,也适合准备编程训练的学生、复习特定 API 或语言特性的程序员,以及希望超越入门课程的中级学习者。

前置要求: 你应能编写、编译和调试基础 Java 程序,并理解变量、控制流、方法、class 和 array。更专门的挑战需要相应的 collection、file、concurrency、networking、XML、servlet 或 Spring Boot 背景;本集合不会按顺序讲授全部前置知识。

学习环境: 239 个挑战均在课程提供的 Java 编程环境中运行。多数任务涉及编辑、编译和执行源代码,个别任务会使用文件、GUI API、网络、servlet 工具或 Spring Boot,因此具体环境会因挑战而异。

常见问题

这真的是 Beginner 课程吗?

课程整体标为 Beginner,许多任务也确实练习基础,但集合还包含 generic、reflection、concurrency、networking、servlet 和 Spring Boot 等中级或专门主题。如果你从未学过 Java,建议先完成 Java 入门。

必须按顺序完成全部 239 个挑战吗?

不必。课程被配置为非顺序型集合。请把它当作可检索的练习库,根据当前主题和准备程度选择任务。

这些是引导教程还是独立练习?

它们是挑战式编程任务,不是 239 课时的逐步教程。每项任务给出一个需要实现的问题,因此最适合用来应用已经学过的概念。

Spring Boot、servlet、GUI 和网络任务会系统讲授这些主题吗?

不会。它们只是大型集合中的单项扩展挑战。若要系统学习 framework、Web、桌面或网络开发,应先建立 Java 基础,再选择专门课程。

教师

labby
Labby
Labby is the LabEx teacher.