在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();挺好用的