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

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已经写好的代码

  • 使用步骤:

    1. 导入包

      import java.util.Random;

    2. 创建对象

      Random r = new Random();

    3. 产生随机数

      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;

 这就是自动导包设置的好处。

http://www.lryc.cn/news/4133.html

相关文章:

  • C/C++中的static关键字
  • 67 自注意力【动手学深度学习v2】
  • 电子学会2022年12月青少年软件编程(图形化)等级考试试卷(二级)答案解析
  • 关于链表中插入结点的操作……
  • 【项目精选】百货中心供应链管理系统
  • Qt优秀开源项目之十六:SQLite数据库管理系统—SQLiteStudio
  • Python __doc__属性:查看文档
  • 电子科技大学操作系统期末复习笔记(一):操作系统概述
  • [实践篇]13.20 Qnx进程管理slm学习笔记(三)
  • 冰冰学习笔记:多线程
  • 补充一些前端面试题
  • 七大设计原则之单一职责原则应用
  • [USACO23JAN] Leaders B
  • C++模板初阶
  • 文献阅读:Scaling Instruction-Finetuned Language Models
  • gpt草稿
  • mysal第三次作业
  • 分页和mmap
  • C++之异常处理
  • 牛客寒假集训营6 E 阿宁的生成树
  • 嵌入式C基础知识(10)
  • TC3xx FlexRay™ 协议控制器 (E-Ray)-01
  • 优劣解距离法TOPSIS——清风老师
  • 【Unity3D】Shader常量、变量、结构体、函数
  • LeetCode 刷题系列 -- 496. 下一个更大元素 I
  • Docker 搭建本地私有仓库
  • XML中的CDATA且mybatis中特殊字符转义
  • 位运算 | 1356. 根据数字二进制下 1 的数目排序
  • React Hooks之useState详解
  • 选购交换机的参数依据和主要的参数指标详解