// 当前有一个随机数,是生成100-999的随机数值
        // 需要生成数值666,需要知道循环了多少次,才生成的666这个数值
        // 我们可以通过循环来实现
        // 每次循环,执行生成一个随机数,
        // 如果这个数值不是 666 我们就继续执行循环 并且给记录次数变量数值+1
        // 当数值是666时,停止循环,变量中的数值就是记录的循环次数
        // 定义一个变量,最初的数值是0
        // 每次循环,给num赋值一个随机数,如果随机数是666,我们停止循环
        var num = 0;
        // 定义一个循环变量,实际上与真正执行的循环次数是没有关系的
        // 只是便于记录循环次数
        var i = 0;
        // 当 num数值不是666时,我们进入循环
        while(num != 666){
            // 给 num 赋值一个 100-999 之间的随机数
            num = parseInt(Math.random()*(999+1-100) + 100 );
            // 每执行一次循环,i++,记录一次循环次数
            i++;
        }
        // 循环终止之后,执行的程序
        // 输出num,见识是否是666
        // 输出i,查看循环次数是多少次
        console.log(num);
        console.log(i);
        // 总结:
        // 观察这个循环,压根儿就没有定义循环变量
        // 判断进入循环的条件,与循环变量也没有任何关系
        // 也就是没有循环变量,我们的循环也能正常执行
        // 也就是循环次数,与循环变量无关
        // 实际上我们根本不清楚,循环到底需要执行多少次
        // 这样的循环我们就称为未知循环次数的循环
        // 此种情况,我们的循环变量实际上不会影响循环次数,往往用于记录循环次数
        // 说明:
        // 一般的while循环
        // var i = 1 while(i<=5){console.log)() ; i++};
        // 判断进入循环的条件是 i<=5 循环终止时, i 实际数值是 6
        // 现在是不确定循环次数的循环
        // var i = 0 while(num!=666){i++} ;
        // 此时 决定循环次数,是num的数值,与 i的数值是无关的
        // 如果第一次就生成了666,执行i++,i的数值正好是1
        // 需要写成for循环
        // for循环实际与while循环的代码是一抹一样的,只是顺序等不同
        var num = 0;
        for( var i = 0; num != 666; i++ ){
            num = parseInt(Math.random()*(999+1-100) + 100 );
        }
        console.log(num);
        console.log(i);
        // 未知循环次数的程序,更适合使用while循环来实现
        // 非常可惜,我们现在只能完成简单的demo,这个效果还是不是很明显
        // 但是我们要牢牢记住
        // for循环,更适合循环的嵌套
        // while循环,更使用未知循环次数的循环
        // 他们两个有一定是可以相互转化的

while适用于不确定循环次数的更多相关文章

  1. python学习第三次

    while循环 表示当条件成立的时候就循环适用于不知道具体循环次数,但是确定在某个条件成立的情况下就循环while语法:while 条件表达式:语句块#另一种表达方式while 条件表达式:语句块1e ...

  2. 什么是JavaScript循环结构?

    ㈠什么是循环结构 ⑴什么是循环? 反复一遍又一遍的做着相同(相似)的事情 ⑵循环中的两大要素 ①循环条件:什么时候开始,什么时候结束 ②循环操作:循环体,循环过程中,干了什么 ㈡循环结构—while循 ...

  3. 3-Java逻辑控制语句

    目录 Java选择结构 Java循环结构 return.break.continue Math.random()的使用和条件运算符 1.Java选择结构 1.1.if(布尔表达式)单选结构 - 当布尔 ...

  4. 物联网框架SuperIO 2.2.9和ServerSuperIO 2.1同时更新,更适用于类似西门子s7-200发送多次数据,才能读取数据的情况

    一.解决方案 二.更新内容 1.修改IRunDevice接口,把void Send(io,bytes)改成int Send(io,bytes).2.修改网络控制器,发送数据不直接使用IO实例,改为使用 ...

  5. 华为荣耀6 H60-L02/L12(联通版)救砖包【适用于无限重启】

    本帖最后由 HOT米粒 于 2014-11-16 20:43 编辑 华为荣耀6 H60-L02/L12(联通版)救砖包[适用于无限重启]说明: 1.本工具包用于华为荣耀6 H60-L02(联通版): ...

  6. SQL SERVER 9003错误解决方法 只适用于SQL2000

    SQLSERVER 9003错误解决方法 只适用于SQL2000 (只适用于SQL2000) "无法打开新数据库 'POS'.CREATE DATABASE 中止. (Microsoft S ...

  7. ORA-12523: TNS: 监听程序无法找到适用于客户机连接的例程

    今天使用PL/SQL Developer连接到一台新的测试服务器时,遇到ORA错误:ORA-12523: TNS: 监听程序无法找到适用于客户机连接的例程.对应的监听日志文件里面错误为TNS-1252 ...

  8. 1、SQL可搜索可排序可分页存储过程, 2、范围内的随机时间 适用于sql 2008以上

    -- ============================================= -- Author: 蜘蛛王 -- Create date: 2015-10-29 -- Descri ...

  9. smarty模板中获得循环次数

    在smarty中可以有两种写法来获得循环次数(当然lz只会这两种:>,要是有大神会有其他的,欢迎补充) 写法一: {section name=loop loop=3} {$smarty.loop ...

  10. C#更改文件访问权限所有者(适用于各个Windows版本)

    前面也提到了,前段时间在做Online Judge系统,在正式上线前有几个比较老的版本,其中第一个版本使用ACL来控制权限以确保安全(但是这个版本完全建立在IIS上,所以这样做是没效果的),遇到了一些 ...

随机推荐

  1. ORA-01555:snapshot too old: rollback segment number X with name "XXXX" too small

    ORA-01555:snapshot too old: rollback segment number X with name "XXXX" too small 在查询快照的时候 ...

  2. 1.css的初认识

    1.什么是CSS? Cascading Style Sheet 层叠级联样式表 CSS:表现层(美化网页) 字体.颜色.边距.高度.宽度.背景图片.网页定位.网页浮动.... 2.CSS发展史 CSS ...

  3. 力扣451(java)-根据字符出现频率排序(中等)

    题目: 给定一个字符串 s ,根据字符出现的 频率 对其进行 降序排序 .一个字符出现的 频率 是它出现在字符串中的次数. 返回 已排序的字符串 .如果有多个答案,返回其中任何一个. 示例 1: 输入 ...

  4. OpenYurt v1.1.0: 新增 DaemonSet 的 OTA 和 Auto 升级策略

    简介: 在 OpenYurt v1.1.0 版本中,我们提供了 Auto 和 OTA 的升级策略.Auto 的升级策略重点解决由于节点 NotReady 而导致 DaemonSet升级阻塞的问题,OT ...

  5. [Kali] Kali 信息收集

      网络空间测绘. 网络空间测绘是2016年出现的一个概念,主要指用一些技术方法,来探测全球互联网空间上的节点分布情况和网络关系索引,构建全球互联网图谱的一种方法. nmap端口扫描. 子域名爆破. ...

  6. 用 SetWindowPos 方法设置一个停止响应的窗口将卡调用方

    我使用 User32 的 SetWindowPos 方法去设置一个跨进程的窗口,这个窗口是停止响应的,将让调用的 SetWindowPos 方法卡住,不继续执行逻辑.通过堆栈分析是卡在 NtUserS ...

  7. dotnet 在析构函数调用 ThreadLocal 也许会抛出对方已释放

    我在不自量力做一个数组池,就是为了减少使用 System.Buffers.dll 程序集,然而在数组池里面,所用的 ThreadLocal 类型,在我对象析构函数进行归还数组时,抛出了无法访问已释放对 ...

  8. Oracle和达梦:获取表是否被锁定

    1.获取表是否被锁定 select "V$SESSIONS".SESS_ID,"V$SESSIONS".SQL_TEXT,"V$SESSIONS&qu ...

  9. Codeforces Good Bye 2023

    A. 2023 正常签到. void solve() { int n, k, ok = 1; cin >> n >> k; int t = 2023; while(n --) ...

  10. C++ Grammar Focus

    一.结构体 1.基础模板 struct Node { <变量类型1> 变量名1; <变量类型2> 变量名2; ... } <定义变量名1>,<定义变量名2&g ...