JavaSE学习day4_01 循环for,while,do...while
1. 循环高级
1.1 无限循环
for、while、do...while都有无限循环的写法。
最为常用的是while格式的。
因为无限循环是不知道循环次数的,所以用while格式的
代码示例:
while(true){}
1.2 跳转控制语句(掌握)
-
跳转控制语句(break)
-
跳出循环,结束循环
-
-
跳转控制语句(continue)
-
跳过本次循环,继续下次循环
-
-
注意: continue只能在循环中进行使用!而目前我们知道break仅只能在循环和switch中使用。
以下几个代码逻辑性较强,需认真看,认真思考。
练习1:逢7过
需求:
朋友聚会的时候可能会玩一个游戏:逢7过
游戏规则:从任意一个数字开始报数,当你要报的数字是包含7或者是7的倍数时都要说过:过
需求:使用程序在控制台打印出1-100之间的满足逢七必过规则的数据
代码示例:
public class LoopDemo4 {public static void main(String[] args) {//目标:听懂并且自己独立写出来//核心://不报数字的条件://个位是7 十位是7 7的倍数//三个条件只要满足一个,就不报数字
//游戏的规则//1 2 3 4 5 6 过 8 9 10 11 12 13 过 15 16 过 18 19 20 过...
//循环的开始条件:1//结束条件:100for (int i = 1; i <= 100; i++) {//i依次表示这个范围之内的每一个数字if (i % 10 == 7 || i / 10 % 10 == 7 || i % 7 == 0) {System.out.println("过");continue;}System.out.println(i);}
}
}
练习2:求平方根
需求:
键盘录入一个大于等于2的整数 x ,计算并返回 x 的 平方根 。
结果只保留整数部分 ,小数部分将被舍去 。
代码示例:
public class LoopDemo5 {public static void main(String[] args) {//目标:听懂思路并且自己独立写出来
//键盘录入10// 1 * 1 = 1 < 10// 2 * 2 = 4 < 10// 3 * 3 = 9 < 10// 4 * 4 = 16 > 10//说明:10的平方根在3~4之间。保留整数之后:3
//键盘录入20//1 * 1 = 1 < 20// 2 * 2 = 4 < 20// 3 * 3 = 9 < 20// 4 * 4 = 16 < 20// 5 * 5 = 25 > 20//说明:20的平方根在4~5之间,保留整数之后:4
//键盘录入40//1 * 1 = 1 < 40// 2 * 2 = 4 < 40// 3 * 3 = 9 < 40// 4 * 4 = 16 < 40// 5 * 5 = 25 < 40// 6 * 6 = 36 < 40// 7 * 7 = 49 > 40//说明:40的平方根在6~7之间,保留整数之后:6
//思路://从1开始循环,拿着循环得到的每一个数求平方。//拿着结果,跟键盘录入的数字比较。//如果平方之后的结果 == 录入的数字 表示当前数字就是我们题目的结果//如果平方之后的结果 < 录入的数字 循环继续//如果平方之后的结果 > 录入的数字 表示前一个数字就是我们题目的结果//循环的开始条件:1//循环的结束条件:键盘录入的数字
//1.键盘录入数字Scanner sc = new Scanner(System.in);System.out.println("请输入一个整数");int number = sc.nextInt();//2.循环找结果for (int i = 1; i <= number; i++) {//循环体if (i * i == number) {System.out.println(number + "的平方根为" + i);//如果已经找到了,那么后面就不需要再运行了,循环直接停止break;}else if(i * i > number){System.out.println(number + "的平方根为" + (i - 1));//如果已经找到了,那么后面就不需要再运行了,循环直接停止break;}}}
}
练习3:求质数
需求:
键盘录入一个正整数 x ,判断该整数是否为一个质数。
代码示例:
public class LoopDemo6 {public static void main(String[] args) {//目标:听懂思路并且自己独立写出来
//质数:只能被1和本身整除的数。//7 是一个质数//13 是一个质数//8 不是一个质数//25 不是一个质数
//1.键盘录入一个正整数Scanner sc = new Scanner(System.in);System.out.println("请输入一个整数");int number = sc.nextInt();//2.利用循环进行判断//思路一:从1开始到本身number结束,在这个范围之内,有多少个数字能被键盘录入的number整除//如果只有两个,那么表示number是一个质数。
//思路二:从2开始到number-1结束,在这个范围之内,有多少个数字能被number整除//如果没有数字,那么表示number是一个质数。
//思路二循环的开始条件:2//循环的结束条件:number-1int count = 0;for (int i = 2; i < number; i++) {//i依次表示,2~ number-1 这个范围之内的每一个数字//要求的是,在这个范围之内,有多少个数字能被number整除if(number % i == 0){count++;}}//当循环结束之后,表示我们已经找到了,在2 ~ number-1 这个范围之内,有多少个数字能被number整除if(count == 0){System.out.println(number + "是一个质数");}else{System.out.println(number + "不是一个质数");}}
}
以上几个代码是初学者比较难啃的几个编程思维,不懂得要好好琢磨。慢慢就懂了。
2. Random
Random产生随机数(掌握)
-
概述:
-
Random类似Scanner,也是Java提供好的API,内部提供了产生随机数的功能
-
API后续课程详细讲解,现在可以简单理解为Java已经写好的代码
-
-
-
使用步骤:
-
导入包
import java.util.Random;
-
创建对象
Random r = new Random();
-
产生随机数
int num = r.nextInt(10);
解释: 10代表的是一个范围,如果括号写10,产生的随机数就是0-9,括号写20,参数的随机数则是0-19
扩展点:如果第三步没有指定范围,那么会在int的取值范围中获取一个随机数。
-
-
示例代码:
import java.util.Random;
public class RandomDemo {public static void main(String[] args) {//创建对象Random r = new Random();//用循环获取10个随机数for(int i=0; i<10; i++) {//获取随机数int number = r.nextInt(10);System.out.println("number:" + number);}//需求:获取一个1-100之间的随机数int x = r.nextInt(100) + 1;//仔细思考为什么这样写?很精妙System.out.println(x);}
}
Random练习-猜数字小游戏
-
需求:
程序自动生成一个1-100之间的数字,使用程序实现猜出这个数字是多少?
当猜错的时候根据不同情况给出相应的提示
A. 如果猜的数字比真实数字大,提示你猜的数据大了
B. 如果猜的数字比真实数字小,提示你猜的数据小了
C. 如果猜的数字与真实数字相等,提示恭喜你猜中了
-
示例代码:
import java.util.Random;
import java.util.Scanner;
public class RandomTest {public static void main(String[] args) {//要完成猜数字的游戏,首先需要有一个要猜的数字,使用随机数生成该数字,范围1到100Random r = new Random();int number = r.nextInt(100) + 1;while(true) {//使用程序实现猜数字,每次均要输入猜测的数字值,需要使用键盘录入实现Scanner sc = new Scanner(System.in);System.out.println("请输入你要猜的数字:");int guessNumber = sc.nextInt();//比较输入的数字和系统产生的数据,需要使用分支语句。//这里使用if..else..if..格式,根据不同情况进行猜测结果显示if(guessNumber > number) {System.out.println("你猜的数字" + guessNumber + "大了");} else if(guessNumber < number) {System.out.println("你猜的数字" + guessNumber + "小了");} else {System.out.println("恭喜你猜中了");break;}}}
}
运行如下:

猜数字小游戏扩展1:(掌握)
生成随机数的代码不能写在循环里面。
否则,每猜一次,都会产生一个新的随机数。
猜数字小游戏扩展2:(了解)
很多游戏中,都会有保底机制。
假设,在猜数字小游戏中,三次猜不中就触发保底机制
代码示例:
import java.util.Random;
import java.util.Scanner;
public class RandomDemo2 {public static void main(String[] args) {//分析://1.生成一个1-100之间的随机数字Random r = new Random();//扩展1:生成随机数的代码,不能写在循环里面,否则每一次都会生成一个新的随机数//扩展2:保底机制3次//定义变量记录猜的次数int count = 0;int number = r.nextInt(100) + 1;System.out.println(number);//2.使用键盘录入的方式去猜Scanner sc = new Scanner(System.in);while (true) {System.out.println("请输入你要猜的数字");int guessNumber = sc.nextInt();//每猜一次,count就++count++;//判断当前是第几次//如果达到了保底,直接提示猜中了if(count == 3){System.out.println("猜中了");break;}//3.拿着键盘输入的数字 跟 随机数比较判断if (guessNumber > number) {System.out.println("大了");} else if (guessNumber < number) {System.out.println("小了");} else {System.out.println("猜中了");break;}}
}
}
注意: 这里回顾以下,之前在第二天讲的idea有一个设置是自动导包设置,不知道大家还有没有印象,这里就用到了,我们在写代码
Random r = new Random();
的时候,可能你不知道这个类在哪个包,但是我们设置了自动导包,因此文件头部会自动给我们填充上
import java.util.Random;
这就是自动导包设置的好处。
相关文章:
JavaSE学习day4_01 循环for,while,do...while
1. 循环高级 1.1 无限循环 for、while、do...while都有无限循环的写法。 最为常用的是while格式的。 因为无限循环是不知道循环次数的,所以用while格式的 代码示例: while(true){} 1.2 跳转控制语句(掌握) 跳转控制语句&…...
C/C++中的static关键字
概述在C/C中都有static关键字的使用,可以分别修饰变量和函数,分为静态变量【静态成员】、静态成员函数。2. static用法概况静态变量的作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0ÿ…...
67 自注意力【动手学深度学习v2】
67 自注意力【动手学深度学习v2】 深度学习学习笔记 学习视频:https://www.bilibili.com/video/BV19o4y1m7mo/?spm_id_fromautoNext&vd_source75dce036dc8244310435eaf03de4e330 给定长为n 的序列,每个xi为长为d的向量,自注意力将xi 既当…...
电子学会2022年12月青少年软件编程(图形化)等级考试试卷(二级)答案解析
青少年软件编程(图形化)等级考试试卷(二级) 一、单选题(共25题,共50分) 1. 一个骰子,从3个不同角度看过去的点数如图所示,请问5的对面是什么点数?( ) …...
关于链表中插入结点的操作……
服了,好久没敲链表了,这都忘了 newnode->next cur->next; cur->next newnode; newnode->next cur->next; cur->next newnode; newnode->next cur->next; cur->next newnode; newnode->next cur->next; cur-…...
【项目精选】百货中心供应链管理系统
点击下载源码 近年来,随着计算机技术的发展,以及信息化时代下企业对效率的需求,计算机技术与通信技术已经被越来越多地应用到各行各业中去。百货中心作为物流产业链中重要的一环,为了应对新兴消费方式的冲击,从供货到销…...
Qt优秀开源项目之十六:SQLite数据库管理系统—SQLiteStudio
首先,感谢CSDN官方认可 SQLiteStudio是一款开源、跨平台(Windows、Linux和MacOS)的SQLite数据库管理系统。 github地址:https://github.com/pawelsalawa/sqlitestudio 官网:https://sqlitestudio.pl/ 特性很多…...
Python __doc__属性:查看文档
在使用 dir() 函数和 __all__ 变量的基础上,虽然我们能知晓指定模块(或包)中所有可用的成员(变量、函数和类),比如:import string print(string.__all__)程序执行结果为:[ascii_lett…...
电子科技大学操作系统期末复习笔记(一):操作系统概述
目录 前言 操作系统概述 操作系统的目标与功能 操作系统的定义 目标 功能 操作系统的历史 单用户系统 简单批处理系统 多道批处理系统 分时系统 个人电脑 → 分布式系统 → 互联网时代 → 移动计算时代 → ...... 实时系统 操作系统的基本特征 并发 共享 虚拟…...
[实践篇]13.20 Qnx进程管理slm学习笔记(三)
【QNX Hypervisor 2.2用户手册】目录(完结) 4.2 模块 我们可以将组件组合成一个模块。模块中的进程可以组成一个子系统,也可以用于建立一组系统状态,例如基本操作和各种更高级别操作。注意,必须命名模块,以便可以在内部引用它们。而且每个模块必须描述成一个元素,形势如…...
冰冰学习笔记:多线程
欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正。 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位…...
补充一些前端面试题
javascript有哪些库指路>js中的库uniapp和vue有什么区别什么是uniappuni-app(uni,读you ni,是统一的意思)是一个使用Vue.js开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web&#…...
七大设计原则之单一职责原则应用
目录1 单一职责原则介绍2 单一职责原则应用1 单一职责原则介绍 单一职责(Simple Responsibility Pinciple,SRP)是指不要存在多于一个导致类变更的原因。假设我们有一个 Class 负责两个职责,一旦发生需求变更,修改其中…...
[USACO23JAN] Leaders B
题面翻译 题面描述 FJ 有 NNN 头奶牛,每一头奶牛的品种是根西岛 G 或荷斯坦 H 中的一种。 每一头奶牛都有一个名单,第 iii 头奶牛的名单上记录了从第 iii 头奶牛到第 EiE_iEi 头奶牛的所有奶牛。 每一种奶牛都有且仅有一位“领导者”,对…...
C++模板初阶
C模板初阶泛型编程函数模板概念函数模板格式函数模板原理函数模板的实例化模板参数的匹配原则类模板类模板的定义格式类模板的实例化泛型编程 我们前面学习了C的函数重载功能,那么我们如何实现一个通用的交换函数呢,比如:我传入int就是交换intÿ…...
文献阅读:Scaling Instruction-Finetuned Language Models
文献阅读:Scaling Instruction-Finetuned Language Models 1. 文章简介2. 实验 1. 数据集 & 模型 1. 数据集考察2. 使用模型 2. scale up对模型效果的影响3. CoT对模型效果的影响4. 不同模型下Flan的影响5. 开放接口人工标注指标 3. 结论 文献链接:…...
gpt草稿
ChatgptWhatChatGPT(全名:Chat Generative Pre-trained Transformer [2])是由OpenAI开发的一个人工智能聊天机器人程序,于2022年11月推出。该程序使用基于GPT-3.5架构的大型语言模型并通过强化学习进行训练。ChatGPT里面有两个词&…...
mysal第三次作业
1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号,不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工和最低工资。 5、列出职工的平均工资和总工资。 6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表…...
分页和mmap
文章目录一、内存分页1、基本概念2、分页机制下,虚拟地址和物理地址是如何映射的?3、快表(TLB)二、mmap基本原理和分类一、内存分页 1、基本概念 CPU并不是直接访问物理内存地址,而是通过虚拟地址空间来间接的访问物理内存地址。 页&#x…...
C++之异常处理
异常异常是面向对象语言处理错误的一种方式。当一个函数出现自己无法处理的错误时,可以抛出异常,然后输的直接或者间接调用者处理这个错误。语法捕获全部的异常try {//可能抛出异常的代码//throw异常对象 } catch(...) {//不管什么异常,都在这…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
