Java基础(二)流程语句与数组
Java流程语句详解:https://www.cnblogs.com/jiajia-16/p/6008200.html
Java数组详解:https://www.cnblogs.com/jiajia-16/p/6026278.html
Java递归解析:https://www.cnblogs.com/yoyohong/p/5754812.html
Java流程语句训练题:
1、从键盘分别输入年、月、日,判断这一天是当年的第几天。
- public class TestLiuCheng {
- // 从键盘分别输入年、月、日,判断这一天是当年的第几天。
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入年:");
- int year = sc.nextInt();
- System.out.println("请输入月:");
- int month = sc.nextInt();
- System.out.println("请输入日:");
- int day = sc.nextInt();
- int sumDay = 0;
- switch (month){
- case 12:
- sumDay += 30;
- case 11:
- sumDay += 31;
- case 10:
- sumDay += 30;
- case 9:
- sumDay += 31;
- case 8:
- sumDay += 31;
- case 7:
- sumDay += 30;
- case 6:
- sumDay += 31;
- case 5:
- sumDay += 30;
- case 4:
- sumDay += 31;
- case 3:
- if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
- sumDay += 29;
- else
- sumDay += 28;
- case 2:
- sumDay += 31;
- case 1:
- sumDay += day;
- }
- System.out.println(year + "年" + month + "月" + day + "日是今年的第" + sumDay
- + "天");
- }
- }
2、写出下面三个问题代码
(1)、 输出从1到100之间所有的整数;
(2)、 输出从1到100之间所有的奇数;
(3)、 输出从1到100之间所有不能被3整除的数;并输出这些整数的和
- public class LiuChengTest {
- @Test
- public void fun1(){
- int sum = 0;
- for (int i = 1; i <= 100; i++){
- sum += i;
- }
- System.out.println(sum);
- }
- @Test
- public void fun2(){
- int sum = 0;
- for (int i = 1; i <= 100; i++){
- if (i % 2 != 0){
- sum += i;
- }
- }
- System.out.println(sum);
- }
- @Test
- public void fun3(){
- int sum = 0;
- for (int i = 1; i <= 100; i++){
- if ( i % 3 != 0 ){
- sum += i;
- System.out.println(i);
- }
- }
- System.out.println(sum);
- }
- }
3、打印下面两个图形
(1)、输入高度,输出直角三角形。如:输入4, 将输出如下图形
#
##
###
####
(2)、输入高度,输出倒直角三角形。如:输入4, 将输出如下图形
####
###
##
#
- @Test
- public void fun4(){
- for ( int i = 1; i <= 4; i++){
- for (int k = 1; k <= i; k++){
- System.out.print("*");
- }
- System.out.println();
- }
- }
- @Test
- public void fun5(){
- for (int i = 1; i<= 4; i++){
- for (int k = i; k <= 4; k++){
- System.out.print("*");
- }
- System.out.println();
- }
- }
4、打印九九乘法表
- @Test
- public void fun6(){
- for (int i = 1; i <= 9; i++){
- for (int k = 1; k <= i; k++){
- System.out.print(i + "*" + k + "\t=" + i*k+"\t" );
- }
- System.out.println();
- }
- }
5、求两个数的最大公约数和最小公倍数
- @Test
- public void fun7(){
- int m = 12;
- int n = 20;
- int max = (m > n) ? m : n;
- int min = (m < n) ? m : n;
- for (int i = min; i>=1; i--){
- if (m % i == 0 && n % i ==0){
- System.out.println("最大公约数是:"+i);
- break;
- }
- }
- for (int k = max; k <= m*n; k++ ){
- if (k % m == 0 && k % n == 0){
- System.out.println("最小公倍数是:"+k);
- break;
- }
- }
- }
Java数组排序算法与数据结构:
一、什么是数据结构
1、数据结构:
编程的本质就是对数据(信息以数据的形式而存在)的处理,实际编程中不得不处理大量数据,因此实际动手编程之前必须先分析处理这些数据,处理数据之间存在的关系。 现实的数据元素之间有着纷繁复杂的逻辑关系,需要采用合适的物理结构来存储这些数据,并以此为基础对这些数据进行相应的操作。同时,还要分析这些数据结构在时间、空间上的开销的优劣。这种专门研究应用程序中数据之间逻辑关系、存储方式及其操作的学问就是数据结构。
2、逻辑结构:
数据元素之间存在的关联关系被称为数据的逻辑结构。归纳起来,应用程序中的数据大致有如下四种基本的逻辑结构:
集合:数据元素之间只有“同属于一个集合”的关系
线性关系:数据元素之间存在一个对一个的关系
树形结构:数据元素之间存在一个对多个的关系
图状结构或网状结构:数据元素之间存在多个对多个的关系。
同一种的逻辑结构,在底层通常有两种物理存储结构:
顺序存储结构 一维数组
非顺序存储结构 链式存储结构(链表)、散列结构
算法的设计取决于逻辑结构;算法的实现依赖于存储结构
对于普通线性表而言,它的作用是一个容器,用于盛装具有相似结构的数据。
分为顺序存储结构和链式存储结构 可以进行插入、删除和排序的操作
如果线性表,只允许在线性表的某端添加、删除元素,这时就演变为:栈和队列
(1)、栈(stack)(先进后出,或者后进先出),是一种特殊的线性表,只能在固定在一端(线性表的尾端)进行插入、删除操作。 允许进行插入、删除操作的一端为栈顶top,另一端为栈底bottom。
进栈:将一个元素插入栈的过程。栈的长度+1。“压入栈”
出栈:删除一个元素的过程。栈的长度-1。“弹出栈”
分类:分为顺序栈结构和链式栈结构
(2)队列(queue),也是一种特殊的线性表,使用固定的一端(队尾rear)来插入数据,另一端(对头front)用于删除数据。 先进先出。就像购物一样,先进入队伍的顾客先获得服务,整个队伍按固定方向移动。
分为顺序队列结构和链式队列结构。
从JDK1.5开始,java集合框架提供了Queue接口。实现该接口的类可以当成队列使用。
(3)、树,也是一种数据结构,非线性的,这种结构内的元素存在一对多的关系。 树,尤其是二叉树应用很广泛。哈夫曼树和哈夫曼编码就是二叉树的重要用途。排序二叉树、平衡二叉树、红黑树。
二叉树:在普通树的基础上,让一棵树中每个节点最多只能包含两个子节点,且严格区分左子节点和右子节点(位置不能换)。
遍历二叉树,考虑深度优先遍历(先序遍历、中序遍历和后序遍历)和广度优先遍历。
红黑树:一种更高效的检索二叉树,常用来实现关联数组。在实际编程中都有极为广泛的用途,例如JDK提供的集合类TreeMap就是一棵红黑树的实现。
红黑树在只读操作上,跟普通排序二叉树上的只读操作相同,只是检索性能好。对于删除和插入操作可能导致树不再符合红黑树的特征。(需要进行颜色的调换)
红黑树的特性:首先满足排序二叉树的特性;每个节点要么红色,要么黑色;根节点是黑色的;所有叶子节点都是null且为黑色;红色节点的两个子节点是黑色的;从任一节点到其子树的每个叶子节点的路径都包含相同数量的黑色节点)
数组的算法:https://www.cnblogs.com/frankdeng/p/9013392.html
数组的常见排序:https://blog.csdn.net/qq_41664447/article/details/81391646
Java基础(二)流程语句与数组的更多相关文章
- java基础-控制流程语句
一 前言 周末睡觉好舒服,都不想动了,就想睡睡,晒晒太阳,作者劳碌命还是过来写文章了.基础系列文章已经已经出到控制流程,感觉也挺快的,我很自信全网没都多少系列文章能有我这基础系列写的这么好,易于初学者 ...
- Java基础—控制流程语句(条件语句与循环结构)
与任何程序设计语言一样,Java使用条件语句和循环结构确定控制流程.Java的控制流程结构与C和C++的控制流程机构一样,只有很少的例外情况.没有goto语句,但break语句可以带标签,可以利用它实 ...
- java基础3_循环语句,数组
java中的循环: Java中提供了3中循环结构: while do-while for ① 循环结构的作用? 可以不断重复执行循环结构中的代码: ② 上面的3个循环结构功能都是一样的,只是结构 ...
- Java基础-程序流程控制第二弹(循环结构)
Java基础-程序流程控制第二弹(循环结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 流程控制有三种基本结构:顺序结构,选择结构和循环结构.一个脚本就是顺序结构执行的,选择结 ...
- Java基础-程序流程控制第一弹(分支结构/选择结构)
Java基础-程序流程控制第一弹(分支结构/选择结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.if语句 1>.if语句的第一种格式 if(条件表达式){ 语句体: ...
- Java面试题总结之Java基础(二)
Java面试题总结之Java基础(二) 1.写clone()方法时,通常都有一行代码,是什么? 答:super.clone(),他负责产生正确大小的空间,并逐位复制. 2.GC 是什么? 为什么要有G ...
- Java入土--Java基础(二)
Java基础(二) 接上一讲,我们接着来聊聊Java的一些基础知识,下一讲就会进行流程的控制. 类型转换 首先呢,是类型的转换,接上一个内容的数据类型,类型转换就是数据类型更进一步的应用. 由于Jav ...
- Java基础复习笔记系列 四 数组
Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...
- java基础-引用数据类型之一维数组(Array)
java基础-引用数据类型之一维数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组的定义 1>.为什么需要数组 保存一个数据可以定义一个变量,如果要保 ...
- JAVA基础——Switch条件语句
JAVA基础——switch 条件语句 switch语句结构: switch(表达式){ case值1: 语句体1: break: case值2: 语句体2: break: case值3: 语句体3: ...
随机推荐
- electron打造桌面应用
Electron 将网页打包成桌面应用(web页面生成exe) http://m.blog.csdn.net/u014563989/article/details/75045052 Electron学 ...
- 循序渐进VUE+Element 前端应用开发(13)--- 前端API接口的封装处理
在前面随笔<循序渐进VUE+Element 前端应用开发(12)--- 整合ABP框架的前端登录处理>介绍了一个系统最初接触到的前端登录处理的实现,但往往对整个系统来说,一般会有很多业务对 ...
- JavaScript图形实例:Koch曲线
Koch曲线的构造过程是:取一条长度为L0的直线段,将其三等分,保留两端的线段,将中间的一段改换成夹角为60度的两个等长直线:再将长度为L0/3的4个直线段分别进行三等分,并将它们中间的一段均改换成夹 ...
- 如何配置webpack让浏览器自动补全前缀
一.postcss-loader有什么用? PostCSS 本身是一个功能比较单一的工具.它提供了一种方式用 JavaScript 代码来处理 CSS.它负责把 CSS 代码解析成抽象语法树结构(Ab ...
- Dubbo及注册中心原理
本文首发于微信公众号[猿灯塔],转载引用请说明出处 今天是猿灯塔“365天原创计划”第4天. 今天呢!灯塔君跟大家讲: 一.Dubbo意义 网站应用的架构变化经历了一个从所有服务分布在一台服务器上(A ...
- OAuth 2.0 授权方式讲解,规范实践和应用
基于实践说规范 网上看了一些OAuth 2.0的授权方法,尽管讲解的没有什么逻辑性错误,但是存在一个问题,那就是单纯的讲解协议规范却脱离了实际的应用,缺少干货,所以才有了这篇文章,内容基于实际业务进行 ...
- Mysql常用sql语句(24)- delete 删除数据
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 delete 也属于DML语句(数据操纵语句) ...
- day58 作业
目录 一.做一个图书管理系统页面 二.做一个主页模版 三.点赞 一.做一个图书管理系统页面 <!DOCTYPE html> <html lang="en"> ...
- Python并发编程——多线程与协程
Pythpn并发编程--多线程与协程 目录 Pythpn并发编程--多线程与协程 1. 进程与线程 1.1 概念上 1.2 多进程与多线程--同时执行多个任务 2. 并发和并行 3. Python多线 ...
- 利用docker部署oxidized网络设备备份系统
随着网络设备的增多,通过人手备份网络设备倍感压力,而且效率低.有编程基础的人可能会通过Python的parimiko 或者netmiko 连接到设备操作 把文件通过ftp 上传到FTP服务器, 在通过 ...