do{ }while( ); 语句中,我之前的理解是:先执行一次do{ },然后判断while( )中的内容,一般里面都是字符串或者数值作比较嘛,所以理解是:如果判断的这个东西,在这个范围中(等于这个条件),则跳出循环,不执行do{}内容;如果这个东西不在这个范围内(不等于这个条件),则执行do{}中的语句,执行完结束、跳出。不用认真读这个了,一看就是错的:D ,基础知识时就被自己误导后就是这个理解结果,kk

    正确的理解应该是: 

1、首先要认识到这是一个循环语句   

2、先执行一次do{ },然后判断while( );中的内容是不是要继续循环do{ }中的内容,这种行为说明他是一种 <表达式的值是在每次循环结束时检查>,就是一种“先上车后检票”行为,我管你上火车的时候买不买票,没人守着,等你上完车了,我就来检票了,有票就继续坐着,没票就马上把你赶下车,终止这次旅行呗

3、所以就是:先执行了一次do{ }后,然后进行判断, 当while();中的判断为true时,继续进行do{ }中的循环,然后再判断while(),再循环,再判断...以此反复; 如果当while();中的判断为false时,马上终止循环。

那我当时为啥当时会一直理解错呢呢,是因为当时写了个这样的类:

我当时就这样读的:我输入一个数,当这个数是在1、2、3之间的话,就执行do{ }里面的语句,选择一个case然后就输出“石头,剪刀,布”中一个呗。然后,如果你输入的数字小于等于0或者大于等于4的话,就输入错误的数据嘛,输入错误不就是要跳出判断避免再错    (合着我当时把它当成判断语句了?

所以当我写这个游戏中的另外一个类的时候:

不是要判断你输入 Y or N,根据你的选择来判断是继续游戏还是终止游戏吗所以我就根据我的“经验”,写的是“  while("n".equalsIgnoreCase(choice)  )  ”,意思就是<当你输入 Y 的时候,字符串不匹配,所以继续执行do{ }中内容, 当你输入N 的时候,字符串匹配了,所以就跳出循环了>

结果当然是和我的想法不一样了,我输入Y就终止,输入N就执行,怎么想都想不通,就算我改成“   while("y".equalsIgnoreCase(choice)  )  ”,运行正常了,还是找不到为什么。(现在终于想通了)

所以首先一定要清楚,do{ }whlie(); 语句是循环用的,不是来判断的,while(); 只是一个工具人,do{ }一定是用来循环的,不是while();判断完之后,就执行一下do{ }就结束了,还要一直判断的。

就酱

个人觉得do{ }while();挺好用的

对do{ }while();一直以来的误解 -----如何理解do{ }while( );语句的更多相关文章

  1. Expert 诊断优化系列------------------内存不够用么?

    现在很多用户被数据库的慢的问题所困扰,又苦于花钱请一个专业的DBA成本太高.软件维护人员对数据库的了解又不是那么深入,所以导致问题迟迟不能解决,或只能暂时解决不能得到根治.开发人员解决数据问题基本又是 ...

  2. 苹果开发者账号如何多人协作进行开发和真机调试XCode

    首先,先说明一下,我们最容易误解或者理解错误的是:p12证书. 其实p12证书,最直接的使用就是,我们在一台电脑上生成好了cer证书之后,如果使用了开发者账号(无论公司或者个人的)进行ipa进行打包和 ...

  3. Mysql数据库索引

    今天,我们来讲讲Mysql数据库的索引的一些东西,想必大家都知道索引能干吗?必然是查找数据表的时候,查找的速度快啊,尤其是那些几百万行的数据库,不建立索引,你是想考验用户的耐心吗?Mysql有多种存储 ...

  4. 5dfda1332b67817b0f2d7839242021ce'Java数据结构和算法

    1.return 一个空的集合,而不是 null 如果一个程序返回一个没有任何值的集合,请确保一个空集合返回,而不是空元素.这样你就不用去写一大堆 "if else" 判断null ...

  5. 如何把if-else代码重构成高质量代码

    原文:https://blog.csdn.net/qq_35440678/article/details/77939999 本文提纲: 为什么我们写的代码都是if-else? 这样的代码有什么缺点? ...

  6. 【MarkMark学习笔记学习笔记】javascript/js 学习笔记

    1.0, 概述.JavaScript是ECMAScript的实现之一 2.0,在HTML中使用JavaScript. 2.1 3.0,基本概念 3.1,ECMAScript中的一切(变量,函数名,操作 ...

  7. 30 个java编程技巧

    1.return 一个空的集合,而不是 null 如果一个程序返回一个没有任何值的集合,请确保一个空集合返回,而不是空元素.这样你就不用去写一大堆 ”if else” 判断null元素. Java 的 ...

  8. 30 个java编程技巧(最佳实践的初学者)

    1.return 一个空的集合,而不是 null 如果一个程序返回一个没有任何值的集合,请确保一个空集合返回,而不是空元素.这样你就不用去写一大堆 ”if else” 判断null元素. Java 的 ...

  9. C++ Primer 学习笔记_Chapter4 数组和指针–指针

    一.什么是指针? 指针与迭代器一样,指针提供对其所指对象的间接访问,指针保存的是另一个对象的地址: string s("hello"); string *ps = &s; ...

随机推荐

  1. Mybatis入门篇之基础CRUD

    前言 作为一个资深后端码农天天都要和数据库打交道,最早使用的是 Hiberate,一个封装性极强的持久性框架.自从接触到 Mybatis 就被它的灵活性所折服了,可以自己写 SQL,虽然轻量级,但是麻 ...

  2. css学习入门-第一个css程序

    1.css的优势: --内容与表现分离 --网页结构统一,可以实现复用 --样式丰富 2.css的3种导入方式 2.1行内样式 <h1 style="color: red"& ...

  3. 【BZOJ3453】XLkxc

    http://192.168.102.138/JudgeOnline/problem.php?id=3170 知识点:1.拉格朗日插值(多特殊函数相加) 2.这个式子看似非常复杂,然而只要明白这个式子 ...

  4. Cocos Creator 性能优化:DrawCall

    前言 在游戏开发中,DrawCall 作为一个非常重要的性能指标,直接影响游戏的整体性能表现. 无论是 Cocos Creator.Unity.Unreal 还是其他游戏引擎,只要说到游戏性能优化,D ...

  5. 实验 1:Mininet 源码安装和可视化拓扑工具

    实验 1:Mininet 源码安装和可视化拓扑工具 一.实验目的 掌握 Mininet 的源码安装方法和 miniedit 可视化拓扑生成工具. 二.实验任务 使用源码安装 Mininet 的 2.3 ...

  6. leetcode刷题-56合并区间

    题目 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]] 思路 通过设置一个移 ...

  7. Dockerfile使用,示例

    1.dockerfile介绍 镜像分类: 基础镜像:例如centos.Ubuntu.alpine 环境镜像:例如Java.php.go 项目镜像:将项目与环境镜像打包一起 2.Dockerfile常用 ...

  8. 基于Ant Design Vue封装一个表单控件

    开源代码 https://github.com/naturefwvue/nf-vue3-ant 有缺点本来是写在最后的,但是博文写的似乎有点太长了,估计大家没时间往下看,于是就把有缺点写在前面了,不喜 ...

  9. 预科班D9

    2020.09.17星期四 预科班D9 学习内容: 一.列表与字典的嵌套 大前提:将所有同学的信息存起来,取值需求 1.取第二个学生的性别 stus_info = [ {"name" ...

  10. 虚拟机堆(Heap)的基础知识

    概述 一个进程对应一个JVM实例,一个运行时数据区,又包含多个线程,这些线程共享了方法区和堆,每个线程包含了程序计数器.本地方法栈和虚拟机栈 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核 ...