while 特点:
先判断,后执行 循环操作有可能一次都不执行
do...while 语法:
do{ 循环操作 }while(条件); 执行: 先执行一次循环操作, 判断条件,条件成立,再循环操直到条件不成立,循环结束。
特点:先执行,后判断 循环操作至少会执行一次
for 语法:
for(1 循环变量的初始化; 2条件 ; 3 循环变量的更新){ 4循环操作 } 执行: 124 324 324 32(条件不成立,循环结束)
特点:先判断后执行,循环操作有可能一次也不执行
场景:循环次数固定
选用循环结构的原则:
循环次数是否固定 固定:优先for
不固定:循环操作是否有可能一次都不执行 如果有可能,那就用while
如果至少会执行一次,优先用do...while
会执行多次,while、do...while break(中断指令) switch结构中,跳出switch 循环中,跳出循环 continue 只能用在循环中 结束本轮的循环,继续下一轮
程序调试
1、编译报错----语法错误
2、运行时报错---看控制台报错,从上往下找第一行自己代码的地方
3、运行结果不对---逻辑问题 1)借助syso,观察变量的变化 2)
debug:
1、分析问题,确定断点(程序会停留的地方)
2、启动调试
3、单步执行。Step into F5 Step over F6
4、观察变量和控制台的变化
5、找到问题原因,修改代码 双重循环 一个循环里嵌套了另一个循环 外层循环执行一次,内层循环执
行一遍 总共执行次数:外层次数*内层的次数 语法:while do..while for break 跳出所在层的循环 continue 结束所在层那一轮循环 打印图形(外层控制行数,内层控制列数) 12345
12345
12345
*
**
***
****
*****
外层 i [1,5]
内层 j [1,i]
i=1 1 [1,1]
i=2 2 [1,2]
i=3 3 [1,3]
*****
****
***
**
*
*
**
***
****
*****
外层 i[1,5]
内层 :先打空,再打*,再打换行
空格[1,5-i] *[1,i]
i=1 4 1
i=2 3 2
i=3 2 3
i=4 1 4
*
***
*****
*******
********* 1 121 12321 1234321 123454321
外层 :i [1,5]
内层 :空[1,5-i] 数字 x[-(i-1),(i-1)]
i=3 1 2 3 2 1 y y=i-|x|
-2 -1 0 1 2 x x [-(i-1),(i-1)]
y i i
* 1 1 -3
** 2 2 -2
*** 3 3 -1
**** 4 4 0
*** 3 5 1
** 2 6 2
* 1 7 3
Y=-|x|+4
x=i-4----->y=-|i-4|+4
外层 i[1,7]
内层 j[1,i]&&[1,8-i]
或j [1,-|i-4|+4]
外层i [-3,3] 内层y=-|i|+4
扩展
i 空 *
* -3 3 1
** -2 2 2
*** -1 1 3
**** 0 0 4
*** -1 1 3
** -2 2 2
* -3 1 1