JavaSE学习day4_01 循环for,while,do...while

news2024/9/23 21:21:34

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
        //结束条件:100
        for (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-1
        int 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到100
        Random 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.coloradmin.cn/o/341038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL 插入数据

数据库与表创建成功以后&#xff0c;需要向数据库的表中插入数据。在 MySQL 中可以使用 INSERT 语句向数据库已有的表中插入一行或者多行元组数据。 你可以通过 mysql> 命令提示窗口中向数据表中插入数据&#xff0c;或者通过PHP脚本来插入数据。 语法 以下为向MySQL数据表…

51单片机——步进电机实验,小白讲解,相互学习

步进电机简介&#xff1a; 步进电机是将电脉冲信号转变为角位移或多线位移的开源控制元件。在非超载的情况下&#xff0c;电机的转速&#xff0c;停止的位置只取决于脉冲信号的频率和脉冲数&#xff0c;而不受负载变化的影响&#xff0c;即给电机加一个脉冲信号&#xff0c;电机…

Android - 自动系统签名

一、系统签名 以下是两类应用开发场景&#xff1a; 普通应用开发&#xff1a;使用公司自定义 keystore 进行签名&#xff0c;如&#xff1a;微信、支付宝系统应用开发&#xff1a;使用 AOSP 系统签名或厂商自定义 keystore 进行签名&#xff0c;如&#xff1a;设置、录音 系…

数学建模拓展内容:卡方检验和Fisher精确性检验(附有SPSS使用步骤)

卡方检验和Fisher精确性检验卡方拟合度检验卡方独立性检验卡方检验的前提假设Fisher精确性检验卡方拟合度检验 卡方拟合度检验概要&#xff1a;卡方拟合度检验也被称为单因素卡方检验&#xff0c;用于检验一个分类变量的预期频率和观察到的频率之间是否存在显著差异。 卡方拟…

第一部分:简单句——第二章:简单句的补充

简单句的核心构成&#xff1a;一主一谓 主语/宾语/表语 可以变成名词/代词/doing/to do 谓语动词有四种核心变化&#xff1a;三态 一否 时态语态情态否定 简单句的核心&#xff1a;将简单句给写对 简单句的补充&#xff1a;将简单句给写的更好、更充分 简单句的补充 1、限定…

计算机网络之HTTP04ECDHE握手解析

DH算法 离散读对数问题是DH算法的数学基础 &#xff08;1&#xff09;计算公钥 &#xff08;2&#xff09;交换公钥&#xff0c;并计算 对方公钥^我的私钥 mod p 离散对数的交换幂运算交换律使二者算出来的值一样&#xff0c;都为K k就是对称加密的秘钥 2. DHE算法 E&#…

DNS 原理入门指南(一)

DNS 是互联网核心协议之一。不管是上网浏览&#xff0c;还是编程开发&#xff0c;都需要了解一点它的知识。 本文详细介绍DNS的原理&#xff0c;以及如何运用工具软件观察它的运作。我的目标是&#xff0c;读完此文后&#xff0c;你就能完全理解DNS。 一、DNS 是什么&#xff1…

记录每日LeetCode 1138.字母板上的路径 Java实现

题目描述&#xff1a; 我们从一块字母板上的位置 (0, 0) 出发&#xff0c;该坐标对应的字符为 board[0][0]。 在本题里&#xff0c;字母板为board ["abcde", "fghij", "klmno", "pqrst", "uvwxy", "z"]&#x…

Linux重定向符、管道符讲解

目录 重定向 将命令与文件进行互动 输出重定向 输入重定向 管道符 将命令与命令互动起来 重定向 将命令与文件进行互动 重定向分类 一般情况下&#xff0c;Linux命令运行时都会打开一下三个文件 标准输入文件&#xff1a;stdin文件&#xff0c;文件描述符为0&#xff0c;Li…

自定义ESLint规则开发与使用

自定义eslint及使用 项目结构 |-eslint-plugin-demo //自定义eslint插件项目 | |-demo-app // 使用自定义eslint的测试应用 |-README.md 项目效果&#xff1a; github项目地址 自定义ESLint环境准备 安装脚手架 执行下列命令来安装开发eslint的脚手架。 yo(y…

中小学信息学相关编程比赛清单及报名网站汇总(C++类)

1、NOI系列比赛(CSP-J CSP-S NOIP NOI APIO CTSC IOI ISIJ等) NOI官网 NOI全国青少年信息学奥林匹克竞赛https://www.noi.cn/ 2、蓝桥杯青少年创意编程大赛 https://www.lanqiaoqingshao.cn/home 3、中国电子协会考评中心

数据结构 - Set 与 Map 接口介绍(TreeMap,HashMap,TreeSet,HashSet类)

文章目录前言1. Set / Map接口2. TreeSet类3. TreeMap 类4. HashSet 与 HashMap4.1 HashSet / HashMap 底层哈希表4.2 解决哈希冲突总结✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来&#xff01; 编程真是一件很奇妙的东西。你只是浅尝辄止&#xff0c;那么只会觉得…

神经网络基础知识

神经网络基础知识 文章目录神经网络基础知识一、人工神经网络1.激活函数sigmod函数Tanh函数Leaky Relu函数分析2.过拟合和欠拟合二、学习与感知机1.损失函数与代价函数2. 线性回归和逻辑回归3. 监督学习与无监督学习三、优化1.梯度下降法2.随机梯度下降法(SGD)3. 批量梯度下降法…

JavaScript系列之new运算符

文章の目录一、什么是new&#xff1f;二、new经历了什么过程&#xff1f;三、new的过程分析四、其他作用参考写在最后一、什么是new&#xff1f; 众所周知&#xff0c;在JS中&#xff0c;new的作用是通过构造函数来创建一个实例对象。 像下面这样&#xff1a;&#xff08;和普…

Centos篇-Centos Minimal安装

安装Centos Minimal 下载镜像 由于使用Centos主要是安装K8s以及使用K8s或者docker安装各种服务&#xff0c;可以理解为就是单纯的服务器使用&#xff0c;所以不需要GUI&#xff0c;直接使用Centos的Server版本。 所以选择centos的minimal版本进行下载&#xff1a; 地址&#…

FreeRTOS队列集、事件标志组 | FreeRTOS十一

目录 说明&#xff1a; 一、队列集 1.1、队列集简介 1.2、队列集作用 二、队列集相关API函数 2.1、创建队列集函数 2.2、往队列集添加队列函数 2.3、队列集移除队列函数 2.4、获取队列集中有有效队列 三、事件标志组 3.1、什么是事件标志组 3.2、事件标志组的特点 …

Matlab傅里叶谱方法求解二维波动方程

傅里叶谱方法求解基本偏微分方程—二维波动方程 二维波动方程 将一维波动方程中的一维无界弦自由振动方程推广到二维空间上, 就得到了描述无界 (−∞<x,y<∞)(-\infty<x, y<\infty)(−∞<x,y<∞) 弹性薄膜的波动方程: ∂2u∂t2a2(∂2∂x2∂2∂y2)u(1)\frac…

HTML img和video object-fit 属性

简介 Css中object-fit主要是应用到img标签和Video标签的&#xff0c;来控制显示缩放效果的。 首先我们存在一张图片&#xff0c;原始图片的尺寸是 1080px x 600px, 展示效果如下&#xff1a; 如果我们的css样式中的img大小设定并不能满足图片的原始大小&#xff0c;比如我们的…

Syzkaller学习笔记---更新syz-extract/syz-sysgen(一)

Syzkaller学习笔记Syzkaller 安装文件系统内核Android common kernel参考文献syzkaller 源码阅读笔记-1前言syz-extractmainarchListcreateArchesworkerprocessArchprocessFileextractcheckUnsupportedCallsarchList小结syz-sysgenmainprocessJob()generateExecutorSyscalls()w…

Linux ALSA 之十一:ALSA ASOC Path 完整路径追踪

ALSA ASOC Path 完整路径追踪一、ASoc Path 简介二、ASoc Path 完整路径2.1 tinymix 设置2.2 完整路径 route一、ASoc Path 简介 如前面小节所描述&#xff0c;ASoc 中 Machine Driver 是 platform driver 和 codec driver 的粘合剂&#xff0c;audio path 离不开 FE/BE/DAI l…