当前位置: 首页 > news >正文

【Java基础入门篇】二、控制语句和递归算法

Java基础入门篇


二、控制语句和递归算法

2.1 switch-case多分支选择语句

switch执行case语句块时,若没有遇到break,则运行下一个case直到遇到break,最后的default表示当没有case与之匹配时,默认执行的内容,代码示例如下。

    /**   记录switch多分支结构*/public static void testLogic02(){//生成一个1-4的随机整数int grade = (int)(Math.random()*4)+1;switch(grade){case 1:System.out.println("大一!不要迷茫,好好学,差距就是大一开始的!");break;case 2:System.out.println("大二!别玩游戏了,开始加油吧!");break;case 3:System.out.println("大三!真快啊!");break;default:System.out.println("大四!马上要毕业了!");break;}}

补充:对于生成随机数的使用:Math.random()方法会产生0-1之间的double类型的随机数但是不包括1。如果想生成例如[0, 5]的随机整数可以通过:int i = (int)(6 * Math.random());实现。

2.2 if-else语句

if-else语句是最简单且常用的单分支控制语句,当满足if条件时,执行if的内容,否则执行else。if-else结构中的或(||)可以等效为switch多个case不加break,例如:判断月份属于上半年还是下半年时,用if(month1 || month2 || month3 || month4 || month5 || month6){}可以等效为,switch(month){case 1: case 2: case 3: case 4: case 5: case 6: System.out.println(“这是上半年”);break; default …}

    /** 记录if-else控制语句*/public static void testLogic01(){double rand = Math.random();System.out.println("生成一个随机数: " + rand);/*  if单分支(掷骰子游戏)*   定义规则:*   1.如果三次的点数和>15,则手气不错*   1.如果三次的点数和介于10~15之间,则手气一般*   1.如果三次的点数和<10,则手气很差*/// 定义1-6的随机整数try {int i = (int) (6 * Math.random()) + 1;System.out.println("第一个骰子:" + i);Thread.sleep(1000);int j = (int) (6 * Math.random()) + 1;System.out.println("第二个骰子:" + j);Thread.sleep(1000);int k = (int) (6 * Math.random()) + 1;System.out.println("第三个骰子:" + k);int count = i + j + k;System.out.println("三个骰子总计:" + count);if (count >= 15){System.out.println("今天手气不错!再来一把!");}else if (count>=10 && count < 15) {System.out.println("手气一般!再来两把!");}else{System.out.println("手气不行!回家吧");}}catch(Exception e) {System.out.println("Got an exception!");}}

在这里插入图片描述

2.3 for循环语句

循环结构中必须要有让循环趋于结束的变化变量,否则为“死”循环。for循环本质上就是将初始化部分、布尔表达式以及迭代因子放在一行进行展示。

    /**     记录for循环结构*/public static void testLogic03(){System.out.println("For Circle: ");for(int i = 0; i <= 3; i++){  // 初始化部分、布尔表达式、迭代因子System.out.println(i);   // 循环体}}

在这里插入图片描述

2.4 while循环语句

while循环与for循环类似,但是对应的初始化部分、布尔表达式和迭代因子位于循环内部。

   /**     记录while循环结构*/public static void testLogic03(){int a = 0;  //初始化部分System.out.println("While Circle: ");while(a<3){// 布尔表达式System.out.println(a);   // 循环体a++;  // 迭代因子}}

在这里插入图片描述

do-while和while的区别就是,do-while至少执行一次循环体

    /**     记录do-while循环结构*/public static void testLogic03(){System.out.println("Do-While Circle: ");a = 0; //初始化部分do{System.out.println(a); // 循环体a--; // 迭代因子}while (a > 0); // 布尔表达式}

在这里插入图片描述

2.5 循环结构小案例

案例一

要求:使用while/for循环1-130之间的数字,每行显示5个数字

public static void testLogic04(){int j = 5; //定义计数器for(int i = 1;i <= 130; i++){System.out.print(i+"\t");j--;if (j == 0){ //每五个换一次行System.out.println();j = 5;}}}

在这里插入图片描述

案例二

要求:打印输出九九乘法表

    public static void testLogic05(){for(int i = 1;i <= 9;i++){for(int j = 1; j <= i; j++){// System.out.print(j+"x"+i+"="+i*j+"\t");//通过三目运算法控制右对齐System.out.print(j+"x"+i+"="+(i*j < 10 ? (" "+i*j): i*j)+"\t");}System.out.println();}}

在这里插入图片描述

案例三

要求:打印如下所示:

* * * * *

* * * * *

* * * * *

* * * * *

* * * * *

public static void testLogic05(){for(int i = 0;i < 5;i++){for(int j = 0;j < 5; j++){System.out.print("*"+"\t");}System.out.println();}
}

在这里插入图片描述

案例四

要求:打印如下所示:

* # * # *

# * # * #

* # * # *

# * # * #

* # * # *

   public static void testLogic05(){int c = 0; //计数器for(int i = 0;i < 25;i++){if (i % 2 == 0) {System.out.print("*" + "\t");} else {System.out.print("#" + "\t");}c++;while(c == 5) {c = 0;System.out.println();}}}

在这里插入图片描述

2.6 递归算法

递归的思想就是“自己调自己”,需要定义递归头(什么时候结束递归)以及递归体(什么时候调用递归)。递归的优点是算法简单,但是递归会占用大量的系统堆栈,内存耗用多,相较于循环速度会慢的多。

    /**   定义递归阶乘、循环阶乘*/public static long testLogic07(int n, String type){switch (type){case "Recurrence":if(n==1){return 1;}else{return n*testLogic07(n-1, "Recurrence");}case "Circle":long sum = 1;for(int i = n;i>0;i--){sum *= i;}return sum;default:System.out.println("请选择Recurrence或者Circle中的任意一种方法");break;}return 9999;}

在这里插入图片描述

相关文章:

【Java基础入门篇】二、控制语句和递归算法

Java基础入门篇 二、控制语句和递归算法 2.1 switch-case多分支选择语句 switch执行case语句块时&#xff0c;若没有遇到break&#xff0c;则运行下一个case直到遇到break&#xff0c;最后的default表示当没有case与之匹配时&#xff0c;默认执行的内容&#xff0c;代码示例如…...

PostgreSQL WAL日志膨胀处理

作者&#xff1a;Digital Observer&#xff08;施嘉伟&#xff09; Oracle ACE Pro: Database PostgreSQL ACE Partner 11年数据库行业经验&#xff0c;现主要从事数据库服务工作 拥有Oracle OCM、DB2 10.1 Fundamentals、MySQL 8.0 OCP、WebLogic 12c OCA、KCP、PCTP、PCSD、P…...

用户该怎么管理维护自己的服务器?

管理和维护自己的服务器是确保其长期稳定、高效和安全运行的重要任务。以下是一些关键的服务器管理和维护的步骤和建议&#xff0c;适用于Linux或Windows服务器。 1.定期备份数据 定期备份是防止数据丢失和恢复故障的关键步骤。备份策略应包括&#xff1a; 全量备份&#xff1a…...

【MYSQL数据库相关知识介绍】

MySQL 在我们日常技术中是一个广泛使用的开源关系型数据库管理系统&#xff0c;所以作为测试同学&#xff0c;掌握mysql的相关知识是必不可少的技能之一&#xff0c;所以小编从软件测试的角色出发&#xff0c;来整理一些跟测试相关的知识&#xff0c;希望能够帮助到大家。 一、…...

初窥 HTTP 缓存

引言 对于前端来说, 你肯定听说过 HTTP 缓存。 当然不管你知不知道它, 对于提高网站性能和用户体验, 它都扮演着重要的角色! 它通过在客户端和服务器之间存储和重用先前获取的资源副本, 来减少网络流量和降低资源加载时间, 从而提升用户体验! 以下是 HTTP 缓存的重要性: 减少…...

yolov8的深度学习环境安装(cuda12.4、ubuntu22.04)

目录 一、先安装基础环境包 1.首先给Ubuntu安装Chrome浏览器&#xff08;搜索引擎换成百度即可&#xff09; 2、ubuntu 22.04中文输入法安装 3、安装 terminator 4、安装WPS for Linux 5、安装其它之前需要先安装anaconda 6、安装配置anaconda 7、安装完成anaconda后创建…...

RSA算法和AES算法,哪种更安全

目录 一、RSA (非对称加密算法) 二、AES (对称加密算法) 三、对比总结 四、更安全的选择 五、结合使用&#xff1a;RSA AES RSA 和 AES 是两种不同类型的加密算法&#xff0c;适用于不同的场景&#xff0c;因此它们的安全性不能直接比较&#xff0c;而是取决于具体的应用…...

Vue教程|搭建vue项目|Vue-CLI新版脚手架

一、安装Node环境 安装Node及Npm环境 Node下载地址:Node.js — Run JavaScript EverywhereNode.js is a JavaScript runtime built on Chromes V8 JavaScript engine.https://nodejs.org/en/ 安装完成后,检查安装是否成功,并检查版本,命令如下: node -v npm -v mac@Macd…...

kdump调试分析(适用于麒麟,ubuntu等OS)

1. kdump基本原理 1.1 内核崩溃处理机制 当 Linux 系统内核发生崩溃时,通常会触发 panic,系统停止正常运行。Kdump 在这种情况下: 使用一个备用的内核(称为 crash kernel)来启动最小化的环境。从崩溃的主内核中复制内存内容(转储文件)。将转储文件保存到预定义的存储位…...

houdini肌肉刷pin点的方法

目标&#xff1a;产生gluetoanimation这个属性 主要节点&#xff1a;attribute paint(或者muscle paint) 步骤1&#xff1a; 导入肌肉资产 导入的是rest shape的肌肉 在有侧边栏可以打开display group and attribute list&#xff0c;方便查看group。不同的肌肉块按照muscl…...

JMeter 并发策略-针对准点秒杀场景的压测实现

一、场景的压测实现 1&#xff0c;创建线程组&#xff0c;10并发用户执行5次&#xff1b; 2&#xff0c;创建 Synchronizing Timer 元件,用于同步线程&#xff0c;设置同步元件 Synchronizing Timer 3&#xff0c;创建 http 请求4&#xff0c;创建 view results in table 元件…...

龙迅#LT6912适用于HDMI2.0转HDMI+LVDS/MIPI,分辨率高达4K60HZ,支持音频和HDCP2.2

1. 描述 LT6912是一款高性能的HDMI2.0转HDMI和LVDS和MIPI转换器。 HDMI2.0 输入和输出均支持高达 6Gbps 的数据速率&#xff0c;为4k60Hz视频提供足够的带宽。此外&#xff0c;还支持 HDCP2.2 进行数据解密&#xff08;无数据 加密&#xff09;。 对于 LVDS 输出&#xff0c…...

RBF神经网络预测结合NSGAII多目标优化

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 RBF神经网络预测结合NSGAII多目标优化 rbf神经网络预测结合nsga2多目标优化 题外话&#xff1a; 多目标优化是指在优化问题中同时考虑多个目标函数的优化过程。在多目标优化中&#xff0c;通常存在多个冲突的目标&am…...

如何看linux系统内核是aarch64 ,还是64-bit

要查看 Linux 系统内核是 aarch64 架构还是 64-bit 架构&#xff0c;可以通过以下几种方法来确认&#xff1a; 方法 1&#xff1a;使用 uname 命令 uname 命令用于显示系统信息。使用以下命令查看系统的架构&#xff1a; uname -m如果输出是 aarch64&#xff0c;说明你的系统…...

如何通过 ADB 安装 xapk

Android开发这么久,今天发现还能这么操作!😂 记录通过ADB安装xapk、apks的两种方式: 1.ADB命令安装使用APK-Splits技术分包的应用程序 这位大佬的方式步骤较为繁琐,不过兼容性应该较好,亲测成功安装。 2.How to install xapk, apks, or multiple-apks via adb? 这个…...

QT:多ui界面显示

文章目录 1.多ui界面添加2.跳转函数3.返回函数4.Qt5源码工程5.模态显示 1.多ui界面添加 最终生成这个目录 2.跳转函数 void MainWindow::on_pushButton_clicked() {//this->setWindowModality(Qt::WindowModal);test1 *t1 new test1();t1->setParentData(this);this-…...

redis cluster 3主3从部署方案

文章目录 1 Redis Cluster 介绍1 Redis cluster 架构2 Redis cluster的工作原理2.1 数据分区2.2 集群通信2.3 集群伸缩2.3.1 集群扩容2.3.2 集群缩容 2.4 故障转移2.4.1 主观下线2.4.2 客观下线 3 Redis Cluster 部署架构说明3.1 部署方式介绍3.2 实战案例&#xff1a;基于Redi…...

前端学习笔记之文件下载(1.0)

因为要用到这样一个场景&#xff0c;需要下载系统的使用教程&#xff0c;所以在前端项目中就提供了一个能够下载系统教程的一个按钮&#xff0c;供使用者进行下载。 所以就试着写一下这个功能&#xff0c;以一个demo的形式进行演示&#xff0c;在学习的过程中也发现了中文路径…...

从技术视角看AI在Facebook全球化中的作用

在全球化日益加深的今天&#xff0c;人工智能&#xff08;AI&#xff09;作为一种变革性技术&#xff0c;正在深刻影响全球互联网巨头的发展方向。Facebook作为全球最大的社交媒体平台之一&#xff0c;正通过AI技术突破语言、文化和技术的障碍&#xff0c;推动全球化战略的实现…...

Web 表单开发全解析:从基础到高级掌握 HTML 表单设计

文章目录 前言一、什么是 Web 表单?二、表单元素详解总结前言 在现代 Web 开发中,表单 是用户与后端服务交互的重要桥梁。无论是用户登录、注册、搜索,还是提交反馈,表单都无处不在。在本文中,我们将从基础入手,全面解析表单的核心知识点,并通过示例带你轻松掌握表单开…...

Milvus 2.5:全文检索上线,标量过滤提速,易用性再突破!

01. 概览 我们很高兴为大家带来 Milvus 2.5 最新版本的介绍。 在 Milvus 2.5 里&#xff0c;最重要的一个更新是我们带来了“全新”的全文检索能力&#xff0c;之所以说“全新”主要是基于以下两点&#xff1a; 第一&#xff0c;对于全文检索基于的 BM25 算法&#xff0c;我们采…...

【webrtc】 mediasoup中m77的IntervalBudget及其在AlrDetector的应用

IntervalBudget 用于带宽控制和流量整形 mediasoup中m77 代码的IntervalBudget ,版本比较老IntervalBudget 在特定时间间隔内的比特预算管理,从而实现带宽控制和流量整形。 一。 pacedsender 执行周期: 下一次执行的时间的动态可变的 int64_t PacedSender::TimeUntilNextPr…...

AI数据分析工具(二)

豆包-免费 优点 强大的数据处理能力&#xff1a; 豆包能够与Excel无缝集成&#xff0c;支持多种数据类型的导入&#xff0c;包括文本、数字、日期等&#xff0c;使得数据整理和分析变得更加便捷。豆包提供了丰富的数据处理功能&#xff0c;如数据去重、填充缺失值、转换格式等…...

小米路由mini刷PDCN教程补充

花了10天帮助一个网友解决小米路由刷PDCN做打印服务器失败的过程&#xff0c;经历颇多。特别把中间的一些坑写出来&#xff0c;希望大家不要遇到。 首先网上好多教程写的都不错&#xff0c;很适合小白。推荐如下&#xff1a; 刷breed和PDCN方法&#xff1a; 小米路由器mini刷…...

[巅峰极客 2021]签到

[巅峰极客 2021]签到 给了我们好多表情&#xff0c;真的是一脸懵逼 注意给我们的关键词 GAME 现在还不知道是什么意思我们去试着解开一下 用这个emoji表情解密器&#xff0c;这里我找了好久才找到一个 emoji-aes 这里的Key值就是GAME 运行后出现flag NSSCTF{10ve_4nd_Peace…...

详解SpringCloud集成Camunda7.19实现工作流审批(二)

本章将分享的是camunda流程设计器--Camunda Modeler的基本使用&#xff08;对应camunda版本是7.19&#xff09;&#xff0c;包括bpmn流程图画法&#xff0c;各种控件使用以及一些日常业务场景的流程图的实现 参考资料&#xff1a; Camunda BPMN 基础组件-CSDN博客 Camunda: Exe…...

Matlab学习笔记

Magic Traits 文件读取 fid fopen(fn,rt);out fscanf(fid,spec,inf);fclose(fid);2. 读取数据 fid fopen(fn,rt); out textscan(fid,spec);运算篇 fprintf(" xxx %d",a)&#xff0c;当a为数组时&#xff0c;会输出数组数目行&#xff0c;每行是一个元素相关文…...

Hexo博客在多个设备同步

title: ‘Hexo博客在多个设备同步’ date: 2024-11-28 19:08:08 categories: Hexo教程 cover: /img/cover4.jpg description: ‘实现Hexo博客在不同的设备上都可以使用和上传’ 博客链接1 &#xff1a;Hexo搭建博客的多终端同步问题 博客链接2:Hexo博客多台电脑设备同步管理 …...

淘宝Vision Pro:革新购物体验的沉浸式未来

引言 简要介绍淘宝Vision Pro版的背景,包括它在美区AppStore的发布及WWDC上的展示。阐述本文的目的:为读者提供一个全面的功能概览与设计背后的思考。设计原则 列出并简要解释5条设计原则(熟悉、直观、真实、实用、易用)。说明这些原则如何指导整个产品设计过程。核心功能详…...

公链开发中的技术实现路径:构建高效、安全的去中心化网络

区块链技术作为数字经济的重要组成部分&#xff0c;公链&#xff08;Public Chain&#xff09;是其核心架构之一。公链作为去中心化的数字账本&#xff0c;不仅承载着去中心化应用&#xff08;DApp&#xff09;的运行&#xff0c;还确保了交易的透明、安全性。随着区块链技术的…...

商城建设网站开发/软文推送

parse用于从一个字符串中解析出json对象,如 var str {"name":"huangxiaojian","age":"23"} 结果&#xff1a; JSON.parse(str) Objectage: "23"name: "huangxiaojian"__proto__: Object注意&#xff1a;单引号写…...

政府网站建设工作 主要职责/郑州网络营销公司

对于Vue.js来说&#xff0c;如果你想要快速开始&#xff0c;那么只需要在你的html中引入一个<script>标签&#xff0c;加上CDN的地址即可。但是&#xff0c;这并不算是一个完整的vue实际应用。在实际应用中&#xff0c;我们必须要一系列的工具&#xff0c;包括&#xff1…...

海口中小企业网站制作/公司网站如何建设

数据去重复&#xff0c;一直都是表亲们痛点、难点&#xff0c;甚至是痛不欲生。在以前的教程中&#xff0c;小编讲过用数据透视表、函数、sql、、pq、技巧法。传统的函数解决办法是&#xff1a;indexsmallrow&#xff0c;简称裹脚布函数&#xff0c;很多表亲都望而生畏。今天小…...

现在学做网站赚钱吗/如何自己创建网址

引题&#xff1a;大家在日常工作中&#xff0c;我想99%都是用到sqlplus来登陆数据库&#xff0c;对数据库进行管理、调优、配置。那么如果有很多台数据库的时候&#xff0c;我们在连接后全部是统一的SQL>&#xff0c;就有可能发生目前不知道连接那个库上了&#xff0c;当我们…...

微博营销案例/seo网站自动推广

刚开始开发项目的时候&#xff0c;我一直都在用火狐&#xff0c;因为它有一个fireBug插件&#xff0c;特别好用(目前已不支持)&#xff0c;也不知道什么时候&#xff0c;就一直用起来Chrome浏览器了&#xff0c;可能是因为它有强大的插件作为后盾吧。开发了这么多年&#xff0c…...

网站做流量怎么赚钱的/开封seo推广

前天我去一个客户那里装系统&#xff0c;那里的环境是这样的&#xff1a;他们那里是两台邮件服务器&#xff0c;同时用&#xff0c;数据同步&#xff0c;就算是备份和冗余&#xff0c;现在正常的叫A&#xff0c;我要装系统的是B&#xff0c;B有两个盘&#xff0c;一个盘为一个分…...