Java 基础入门代码示例解析
在 Java 编程的学习过程中,理解函数(方法)的使用以及简单系统功能的实现是非常重要的基础。本文将对一系列 Java 代码进行详细解析,这些代码涵盖了菜单驱动的功能选择、数据查询以及简单的 RBAC(基于角色的访问控制)系统模拟等内容。
目录
一、三国群英系统功能实现
二、数字操作功能实现
三、人物信息查询功能实现
四、RBAC 系统模拟实现
因为上篇全是RBAC系统&Java的概念,太空洞,所以补充了这篇关于RBAC系统相关的代码示例,希望可以帮助大家对其理解有着更好的印象。如果想知道上篇内容请点链接
Java基础入门与RBAC系统设计:从方法到面向对象编程-CSDN博客
一、三国群英系统功能实现
- 菜单展示函数
public static void menu(){System.out.println("欢迎大家进入三国群英系统");System.out.println("按1.查询所有英雄");System.out.println("按2.根据姓氏查询英雄");System.out.println("按3.根据关键字查询英雄");
}
menu 函数用于在控制台输出 “三国群英系统” 的操作菜单,为用户提供系统功能的选择提示。
- 主函数及功能选择逻辑
在 main 函数中,首先创建了 Scanner 对象用于读取用户输入,并定义了一个包含英雄名字的字符串数组 arrs。通过一个无限循环 while (true) 不断展示菜单,获取用户输入的选项,并使用 switch 语句根据选项调用相应的功能函数。如果用户输入的选项不在有效范围内(1、2、3),则输出错误提示信息。
- 英雄查询功能函数
public static void findByKeyWord(String[] arrs,Scanner scanner){System.out.println("请输入关键字:");String keyword = scanner.next();for (String hero : arrs) {if (hero.contains(keyword)) {System.out.println(hero);}}
}public static void findByPrefix(String[] arrs,Scanner scanner){System.out.println("请输入姓氏:");String name = scanner.next();for (String hero : arrs) {if (hero.startsWith(name)) {System.out.println(hero);}}
}public static void findAll(String[] arrs ){// 查询所有英雄,直接遍历输出即可//增强for循环for(String hero:arrs){System.out.println(hero);}
}
findByKeyWord 函数接受用户输入的关键字,遍历英雄数组,输出包含该关键字的英雄名字。findByPrefix 函数接受用户输入的姓氏,遍历数组,输出以该姓氏开头的英雄名字。findAll 函数则简单地遍历英雄数组,输出所有英雄的名字。
二、数字操作功能实现
- 菜单展示函数
public static void showMenu(){System.out.println("按1.打印所有的数字");System.out.println("按2.打印所有的负数");System.out.println("按3.输入下标打印对应位置的数字");System.out.println("按4.输入数字打印对应数字所在的下标");
}
showMenu 函数用于展示数字操作的菜单选项,提示用户可以进行的操作。
- 主函数及功能选择逻辑
public static void main(String[] args) {int[] arrs = {11, 23, -22, 12, 43, 34};while (true) {showMenu();//显示菜单Scanner scanner = new Scanner(System.in);int i = scanner.nextInt();switch (i) {case 1:findAll(arrs); //按1.打印所有的数字break;case 2:findByZero(arrs);//按2.打印所有的负数break;case 3:findBySub(arrs, scanner);//按3.输入数字打印对应数字所在的下标break;case 4:findByNum(arrs, scanner);//按3.输入数字打印对应数字所在的下标break;}}
}
在 main 函数中,定义了一个包含数字的整数数组 arrs。通过无限循环展示菜单,获取用户输入的选项,并根据选项调用相应的功能函数。
- 数字操作功能函数
public static void findAll(int[] arrs){for(int num:arrs){System.out.println(num);}
}public static void findByZero(int[] arrs) {for (int i = 0; i < arrs.length; i++) {if (arrs[i] < 0) {System.out.println(arrs[i]);}}
}public static void findBySub (int[] arrs, Scanner scanner){System.out.print("请输入下标:");int index = scanner.nextInt();if (index >= 0 && index < arrs.length) {System.out.println("下标 " + index + " 对应的数字是: " + arrs[index]);} else {System.out.println("下标超出范围");}}public static void findByNum(int[] arrs, Scanner scanner){findAll(arrs);System.out.print("查询下标,输入数字:");int num =scanner.nextInt();for (int i = 0; i < arrs.length; i++) {if (arrs[i]==num){System.out.println("下标是"+i);break;}
}
}
findAll 函数遍历数组并输出所有数字。findByZero 函数遍历数组,输出所有负数。findBySub 函数接受用户输入的下标,检查下标是否在有效范围内,如果有效则输出对应位置的数字,否则输出错误提示。findByNum 函数先输出所有数字,然后接受用户输入的数字,遍历数组查找该数字的下标并输出。
三、人物信息查询功能实现
- 菜单展示函数
public static void showMenu() {System.out.println("按1.查询所有的人物");System.out.println("按2.根据类型查询对应的人物");System.out.println("按3.根据年龄查询对应的人物");
}
showMenu 函数展示人物信息查询系统的菜单选项。
- 主函数及功能选择逻辑
public static void main(String[] args) {String[] arrs = {"黄忠-武将-55", "貂蝉-美女-20", "赵云-武将-30", "张武将-美女-20", "许褚-武将-35", "吕布-武将-33"};Scanner scanner = new Scanner(System.in); // Scanner outside the loopwhile (true) {showMenu();// 显示菜单int i = scanner.nextInt();scanner.nextLine(); // Consume newline characterswitch (i) {case 1:findAll(arrs);// 按1.查询所有的人物break;case 2:findEx(arrs, scanner);// 根据类型查询对应的人物break;case 3:findByAge(arrs, scanner);break;default:System.out.println("无效的选项,请重新输入。");}}
}
在 main 函数中,定义了一个包含人物信息(姓名 - 类型 - 年龄)的字符串数组 arrs。通过无限循环展示菜单,获取用户输入的选项,并根据选项调用相应的功能函数。注意在获取用户输入选项后,使用 scanner.nextLine() 来清除输入缓冲区中的换行符,避免影响后续输入。
- 人物信息查询功能函数
public static void findAll(String[] arrs) {for (String arr : arrs) { // Iterate through the array and print each elementSystem.out.println(arr);}
}public static void findEx(String[] arrs, Scanner scanner) {System.out.println("查询的类型是其中的?(武将,美女)");String example = scanner.next();scanner.nextLine(); // Consume newlinefor (String arr : arrs) {String[] parts = arr.split("-");if (parts.length == 3 && parts[1].equals(example)) {System.out.println(arr);}}
}public static void findByAge(String[] arrs, Scanner scanner) {System.out.println("查询的年龄是?");int age = scanner.nextInt();scanner.nextLine(); // Consume newlinefor (String arr : arrs) {String[] parts = arr.split("-");if (parts.length == 3) {try {int personAge = Integer.parseInt(parts[2]);if (personAge == age) {System.out.println(arr);}} catch (NumberFormatException e) {System.out.println("年龄格式不正确: " + arr); // Handle potential errors}}}
}
findAll 函数遍历数组输出所有人物信息。findEx 函数接受用户输入的类型,遍历数组,根据人物信息的类型进行匹配并输出相应的人物信息。findByAge 函数接受用户输入的年龄,遍历数组,将人物信息中的年龄解析为整数并与用户输入的年龄进行匹配,输出符合条件的人物信息,同时处理年龄格式不正确的情况。
四、RBAC 系统模拟实现
- 菜单展示函数
public static void showMenu() {System.out.println("--------------------欢迎进入RBAC系统--------------------");System.out.println("按1.查询所有部门");System.out.println("按2.根据ID查询部门");System.out.println("按3.根据名称查询部门");
}
showMenu 函数展示 RBAC 系统的菜单选项。
- 主函数及功能选择逻辑
public static void main(String[] args) {String[] depts = {"1-生活部", "2-宣传部", "3-礼仪部", "4-财务部"};Scanner scanner = new Scanner(System.in); // Scanner outside the loopfor (; ; ) {showMenu();int i = scanner.nextInt();scanner.nextLine();switch (i) {case 1:findAll(depts);break;case 2:findById(depts, scanner);break;case 3:findByName(depts, scanner);break;default:System.out.println("无效的选项,请重新输入。");}}
}
在 main 函数中,定义了一个包含部门信息(ID - 部门名称)的字符串数组 depts。通过无限循环展示菜单,获取用户输入的选项,并根据选项调用相应的功能函数。
- 部门信息查询功能函数
public static void findAll(String[] arrs) {for (String arr : arrs) {System.out.println(arr); //直接输出}
}public static void findById(String[] arrs, Scanner scanner) {System.out.println("输入要查询的Id号码");int idNum = scanner.nextInt();scanner.nextLine(); // Consume newlineboolean found = false;for (String arr : arrs) {String[] parts = arr.split("-");if (parts.length == 2) {try {int deptId = Integer.parseInt(parts[0]);if (deptId == idNum) {System.out.println("找到部门: " + arr);found = true;break; // Exit loop after finding the department}} catch (NumberFormatException e) {System.out.println("部门ID格式不正确: " + arr);}}}if (!found) {System.out.println("未找到ID为 " + idNum + " 的部门");}
}public static void findByName(String[] depts, Scanner scanner) {System.out.println("输入要查询的部门名称");String deptName = scanner.nextLine();boolean found = false;for (String dept : depts) {String[] parts = dept.split("-");if (parts.length == 2 && parts[1].equals(deptName)) {System.out.println("找到部门: " + dept);found = true;break;}}if (!found) {System.out.println("未找到名称为 " + deptName + " 的部门");}
}
findAll 函数遍历数组输出所有部门信息。findById 函数接受用户输入的部门 ID,遍历数组,将部门信息中的 ID 解析为整数并与用户输入的 ID 进行匹配,输出符合条件的部门信息,同时处理 ID 格式不正确的情况以及未找到对应部门的情况。findByName 函数接受用户输入的部门名称,遍历数组,根据部门名称进行匹配并输出相应的部门信息,处理未找到对应部门的情况。
通过以上代码示例,我们可以看到如何使用 Java 函数(方法)来实现不同系统的功能选择和数据查询操作,这对于理解 Java 编程的基本概念和逻辑非常有帮助。希望读者能够通过这些示例更好地掌握 Java 编程的基础知识。
相关文章:
Java 基础入门代码示例解析
在 Java 编程的学习过程中,理解函数(方法)的使用以及简单系统功能的实现是非常重要的基础。本文将对一系列 Java 代码进行详细解析,这些代码涵盖了菜单驱动的功能选择、数据查询以及简单的 RBAC(基于角色的访问控制&am…...
AI 的“幻觉”现象:深入解析 Hallucination 的成因与应对之道
文章目录 一、啥是 AI 的 Hallucination?二、啥时候容易出现幻觉?1. 知识边界之外的问题2. 模糊或不明确的输入3. 生成长篇内容4. 多模态任务中的误解5. 过度自信的语气要求 三、幻觉为啥会出现?原理是啥?1. 概率预测的本质2. 训练…...
核心知识——论文详解
引入 在2010年,来自Berkeley的博士生 Matei Zaharia 发表了一篇论文《Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing》。伴随着这篇论文的,是一个开源系统,也就是 Spark。在之后的几年里&…...
LeetCode hot 100 每日一题(15)——48.旋转图像
这是一道难度为中等的题目,让我们来看看题目描述: 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 提示…...
屏幕后处理Post-Processing安装及使用
一、安装Post-Processing插件 在 Window --- PackageManager 中搜索并安装 Post-Processing 二、添加后处理效果步骤 给场景中的相机Camera添加 Post - process Layer,只有添加了该组件的相机才会进行相应的后处理,此组件允许您为该后处理层配置抗锯齿…...
探索Halo:不止是博客,更是创作新宇宙
开篇:邂逅 Halo 作为一名热爱写作与分享的博主,拥有一个称手的博客系统一直是我的追求。在探索博客系统的旅程中,我尝试过不少平台,从 WordPress 到 Hexo ,每一次转换都是为了寻找那个最完美的 “写作伴侣”。 WordP…...
吐血整理:Air8201如何使用LuatOS进行电源管理功能!
在物联网应用场景中,设备续航能力直接影响其部署成本与运维效率。LuatOS操作系统通过软件层面的精细化控制,为Air8201提供了灵活且高效的电源管理策略。本文将从系统架构、API接口、实战配置三个维度,解析如何利用LuatOS实现Air8201的智能电源…...
开源视觉语言模型MiniMax-VL-01:动态分辨率+4M超长文本,性能比肩GPT-4o
在人工智能领域,构建能够像人类一样理解、思考和行动的智能体(AI Agent)一直是研究人员的终极目标之一。而实现这一目标的关键在于模型是否具备足够强大的感知能力、记忆能力和推理能力。近期,国内人工智能公司MiniMax重磅开源了其…...
数据库:一文掌握 Neo4J 的各种指令(Neo4J指令备忘)
文章目录 入门Neo4J运行 Neo4J 使用进入管理页面 图数据库概念 Neo4j 语法读取查询结构仅写入查询结构读取-写入查询结构 Neo4j 读取数据MATCHWHERERETURNWITHUNION Neo4j 写入数据CREATESETMERGEDELETEREMOVEFOREACH调用子查询调用存储过程导入运算符nullPatternsUSESHOW FUNC…...
Java面试第十三山!《设计模式》
大家好,我是陈一。如果文章对你有帮助,请留下一个宝贵的三连哦~ 万分感谢! 一、设计模式入门指南 1. 什么是设计模式? 设计模式是可复用的解决方案模板,用于解决软件开发中常见的架构问题。如同建筑领域的…...
从 @SpringBootApplication 出发,深度剖析 Spring Boot 自动装配原理
在 Spring Boot 的开发旅程中,SpringBootApplication 注解堪称开启便捷开发之门的钥匙。它不仅是一个简单的注解,更是理解 Spring Boot 自动装配原理的重要入口。接下来,我们将以SpringBootApplication 为切入点,深入探究 Spring …...
使用vue3和vue-router实现动态添加和删除cachedViews数组
以下是一个使用 Vue 3 和 Vue Router 实现动态添加和删除 cachedViews 数组的代码示例,该示例结合 keep-alive 组件来动态控制路由组件的缓存。 src/ ├── App.vue ├── router/ │ └── index.js ├── views/ │ ├── Home.vue │ ├── About.v…...
vue 点击放大,图片预览效果
背景: 在使用vue框架element组件的背景下,我们对图片的展示需要点击放大(单张);如果是多张图片,要支持左右滑动查看多张图片(多张)。 单张图片放大,el-image图片组件,或者原生的img标签。 多张图片放大&…...
如何使用Xshell连接Linux虚拟机
在日常开发和运维工作中,远程连接Linux服务器或虚拟机是一项基本技能。Xshell 是一款功能强大的终端模拟器,支持通过 SSH 协议远程连接 Linux 系统。本文将详细介绍如何使用 Xshell 连接 Linux 虚拟机。准备工作 在开始之前,请确保你已经完成…...
笛卡尔轨迹规划之齐次变换矩阵与欧拉角、四元数的转化
一、笛卡尔轨迹规划需求 笛卡尔轨迹规划本质就是我们对机械臂的末端位置和姿态进行规划,其实也就是对末端坐标系的位姿进行规划。我们清楚末端坐标系的位姿是可以用齐次变换矩阵T来表示的,但这样表示的话,并不利于我们去做规划,所…...
1 存储过程学习: 使用DMSQL程序的优点
DMSQL程序具有以下优点: 与SQL语言的完美结合 SQL语言已成为数据库的标准语言,DMSQL程序支持所有SQL数据类型和所有SQL函数,同时支持所有DM对象类型。在DMSQL程序中可以使用SELECT、INSERT、DELETE、UPDATE数据操作语句,事务控制…...
NPU上如何使能pytorch图模式
1 Pytorch的compile技术 PyTorch 的 torch.compile 是一个强大的功能,用于优化 PyTorch 模型的性能。它通过将 PyTorch 的动态图转换为静态图,并利用 Just-In-Time(JIT)编译技术,显著提高模型的推理速度和训练效率。 …...
进制转换(c++)
由于进制转换属于基础且比较重要,所以我就写一个博客方便自己复习,过程中如有错误,还请指出。 常用的进制有二进制,八进制,十进制和十六进制。 常用的进制转换就是十进制转换成其他进制和其他进制转换成十进制 我们先…...
2025-03-24 学习记录--C/C++-PTA 习题7-7 字符串替换
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 习题7-7 字符串替换 本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换&#…...
为什么TCP需要三次握手?一次不行吗?
文章目录 1. 三次握手的过程2. 为什么需要三次握手?3. 握手过程中每一步的具体作用4. 简单比喻5. 为什么是三次握手,而不是两次或四次?6. 三次握手中的序列号有什么作用?7. 总结 1. 三次握手的过程 三次握手是建立 TCP 连接的过程…...
具身系列——NLP工程师切入机器人和具身智能方向
职位高频词汇:VLM调优经验、核心算法(Diffusion、RL、VIT)、pytorch、仿真环境(Isaac Gym、Mujoco、webots) 基于当前具身智能行业发展趋势和岗位需求,以下是为NLP工程师设计的转型路径与策略,…...
SpringBoot2集成Elasticsearch8(使用spring-boot-starter-data-elasticsearch)
写在前面 使用spring-boot-starter-data-elasticsearch集成Elasticsearch8? What? 官方写的不支持啊?让我们来看下官方给出的版本建议。 官方地址: https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/versions.…...
【平台优化】持续调度参数在高负载大集群中的影响
持续调度参数在高负载大集群中的影响 背景介绍2种调度通信方式对集群的影响社区相关的讨论结论 背景介绍 这几年经历了我们大数据的Yarn集群的几次扩容,集群从原先的800多台增加到1300多台到现在的1600多台,在集群规模不断增加的过程中,有遇…...
军事级加密通信系统——基于QML的战术地图加密传输
目录 基于QML的战术地图加密传输一、引言二、理论背景与安全需求2.1 战术地图数据的敏感性与安全性要求2.2 QML与PyQt5集成优势2.3 加密算法与数据传输模型三、系统架构与数据流图四、QML前端界面设计与交互功能4.1 QML界面优势与设计理念4.2 功能要求4.3 QML文件示例五、加密传…...
ElasticSearch 可观测性最佳实践
ElasticSearch 概述 ElasticSearch 是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别(大数据时代)的数据。ES 也使用 Java 开…...
(一)飞行器的姿态欧拉角, 欧拉旋转, 完全数学推导(基于坐标基的变换矩阵).(偏航角,俯仰角,横滚角)
(这篇写的全是基矢变换矩阵)不是坐标变换矩阵,坐标变换矩阵的话转置一下,之后会有推导. 是通过M转置变换到P撇点....
基于Spring Boot + Vue的银行管理系统设计与实现
基于Spring Boot Vue的银行管理系统设计与实现 一、引言 随着金融数字化进程加速,传统银行业务向线上化转型成为必然趋势。本文设计并实现了一套基于Spring Boot Vue的银行管理系统,通过模块化架构满足用户、银行职员、管理员三类角色的核心业务需求…...
数据库基础知识点(系列一)
1.数据库的发展历史分哪几个阶段?各有什么特点? 答:数据库技术经历了人工管理阶段、文件系统阶段和数据库系统三个阶段。 1)人工管理阶段 这个时期数据管理的特点是: 数据由计算或处理它的程序自行携带…...
Android Compose 层叠布局(ZStack、Surface)源码深度剖析(十三)
Android Compose 层叠布局(ZStack、Surface)源码深度剖析 一、引言 在 Android 应用开发领域,用户界面(UI)的设计与实现一直是至关重要的环节。随着技术的不断演进,Android Compose 作为一种全新的声明式…...
JVM常用概念之身份哈希码
问题 当我们调用Object.hashCode时,如果没有用户没有提供哈希码,会发生什么? System.identityHashCode如何工作?它是否获取对象地址? 基础知识 在 Java 中,每个对象都有equals和hashCode ,即…...
