循环
1、循环: 反复执行一段相同或相似的代码
2、循环三要素:
1) 循环变量的初始化
2) 循环的条件(以循环变量为基础)
3) 循环变量的改变(向着循环的结束变)
循环变量: 在整个循环过程中所反复改变的那个数
2、循环结构:
有条件的执行某语句多次,并非每句必走
- while结构: 先判断后执行,有可能一次都不执行
while结构:
1)语法:
while(boolean){
语句块-------------反复执行的代码
}
2)执行过程:
判断boolean的值,若为true则执行语句块,
再判断boolean的值,若为true则再执行语句块,
再判断boolean的值,若为true则再执行语句块,
如此反复,直到boolean的值为false时循环结束
- do…while 结构: 先执行后判断,至少执行一次
要素1和要素3相同时,首选do…while
do...while结构:
1)语法:
do{
语句块
}while(boolean);
2)执行过程:
先执行语句块,再判断boolean的值,若为true则
再执行语句块,再判断boolean的值,若为true则
再执行语句块,如此反复,直到boolean为false则循环结束
- for 应用率最高,与次数相关的循环
for结构:
1)语法:
// 1 2 3
for(要素1 ; 要素2 ; 要素3){
语句块/循环体----------------------反复执行的代码 4
}
2)执行过程:
12432432432432432432432
例 1:
求累加和:1+2+3+4+...+99+100=?跳过个位为3的
public static void main(String[] args) {
int sum = 0; //存和
for(int i=1;i<=100;i++){
if(i%10==3){
continue; //跳过循环体中剩余语句而进入下一次循环(去i++了)
}
sum = sum+i; //累加(在本身基础之上加)
}
System.out.println("sum="+sum);
}
}
例2:
输出9 的乘法表
public static void main(String[] args) {
//正序输出
for(int num=1;num<=9;num++){
System.out.println(num+"*9="+num*9);
}
//部分输出(奇数)
for(int num=1;num<=9;num+=2){
System.out.println(num+"*9="+num*9);
}
//倒序输出
for(int num=9;num>=1;num--){
System.out.println(num+"*9="+num*9);
}
}
}
选择标准?
- 先看循环是否与次数相关:
1.1) 与次数相关------------直接上for
1.2) 与次数无关,再看要素1(循环变量的初始化)与要素3(循环变量的改变)是否相同:
1.2.1) 若相同----------直接上do…while
1.2.2) 若不同----------直接上while
break: 跳出循环
continue: 跳过循环体中剩余语句而进入下一次循环
嵌套循环:
- 循环中套循环,一般多行多列时使用,外层控制行,内层控制列
- 执行规则: 外层循环走一次,内层循环走所有次
- 建议: 嵌套的层数越少越好,能用一层就不用两层,能用两层就不用三层
若业务必须通过三层以上的循环才能解决,说明设计有问题
例:输出九九乘法表
public static void main(String[] args) {
for(int num=1;num<=9;num++){ //控制行
for(int i=1;i<=num;i++){ //控制列
System.out.print(i+"*"+num+"="+i*num+"\t");
}
System.out.println(); //换行
}
}
系统随机生成数 -------其中一种表达方式
Math.random();
1到1000的随机数
Math.random()-------------0.0到0.99999999999999999…
*1000---------------------0.0到999.999999999999999…
(int)-----------------------0到999
+1------------------------1到1000
例:猜数字
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num = (int)(Math.random()*1000+1); //1到1000之内的随机数
System.out.println(num); //假设输出这个数
//300(大),200(小),-1(下次)
int guess;
do{
System.out.println("猜吧!");
guess = scan.nextInt(); //1+3
if(guess==-1){
System.out.println("下次再来吧!");
break; //退出循环
}
if(guess>num){
System.out.println("太大了");
}else if(guess<num){
System.out.println("太小了");
}else{
System.out.println("恭喜你猜对了");
}
}while(guess!=num); //2.
}
}
明天继续加油!!!