Java中的循环结构

循环:反复多次执行一段相同或相似的代码

循环三要素:
  • 循环变量的初始化
  • 循环的条件(以循环变量为基础)
  • 循环变量的改变(向着循环的结束变)

循环变量:在整个循环过程中所反复改变的那个数

例如:
输出5次"行动是成功的阶梯"
行动是成功的阶梯
行动是成功的阶梯
行动是成功的阶梯
行动是成功的阶梯
行动是成功的阶梯

循环变量:次数num
1)int num=0;
2)num<5
3)num++;
num=0/1/2/3/4/ 5时结束

循环结构
while结构
  • 先判断后执行,有可能一次都不执行
1)语法:
while(boolean){
    语句块/循环体----------反复执行的代码
}

2)执行过程:
判断boolean的值,若为true则执行语句块,
再判断boolean的值,若为true则再执行语句块,
再判断boolean的值,若为true则再执行语句块,
如此反复,直到boolean的值为false时,while循环结束
//1)输出5次"行动是成功的阶梯":
int num= 0;   //1)循环变量的初始化
while(num<5){ //2)循环的条件
    System.out.println("行动是成功的阶梯");
    num++;    //3)循环变量的改变
}
/*
   执行过程:
                    num=0
      true   输出   num=1
      true   输出   num=2
      true   输出   num=3
      true   输出   num=4
      true   输出   num=5
      false  while循环结束
 */
 
//2)输出9的乘法表:
int num = 1;
while(num<=9){
    System.out.println(num+"*9="+num*9);
    num++;
}
import java.util.Scanner;
//猜数字小游戏
public class Guessing {
    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); //作弊:提前输出答案
        System.out.println("猜吧!");
        int guess = scan.nextInt();
        while(guess!=num){
            if(guess>num){
                System.out.println("太大了");
            }else{
                System.out.println("太小了");
            }
            System.out.println("猜吧!");
            guess = scan.nextInt();
        }
        System.out.println("恭喜你猜对了!");

    }
}
do…while结构:
  • 先执行后判断,至少执行一次

    当第1要素与第3要素的代码相同时,首选do…while

import java.util.Scanner;
//猜数字小游戏
public class Guessing {
    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); //作弊
        //假设num=250
        //300(大),200(小),250(对)
        int guess;
        do{
            System.out.println("猜吧!");
            guess = scan.nextInt();  //1+3
            if(guess>num){
                System.out.println("太大了");
            }else if(guess<num){
                System.out.println("太小了");
            }else{
                System.out.println("恭喜你猜对了");
            }
        }while(guess!=num);
    }
}
for结构:
  • 应用率高、与次数相关的循环
1)语法:
//    1    2    3
for(要素1;要素2;要素3){
    语句块/循环体---------------反复执行的语句  4
}
2)执行过程:
1243243243243243...2
for(int num=0;num<5;num++){
    System.out.println("行动是成功的阶梯");
}

//特殊的: for中的循环变量num的作用域---仅在当前for中
for(int num=1;num<=9;num++){
    System.out.println(num+"*9="+num*9);
}
/*
     执行过程:
        num=1  true  1*9=9
        num=2  true  2*9=9
        num=3  true  3*9=27
        ...
        num=8  true  7*9=63
        num=9  true  9*9=81
        num=10 false for循环结束
 */
  
//演示for的特殊语法格式:
int num=1;
for(;num<=9;num++){
    System.out.println(num+"*9="+num*9);
}

for(int num=1;num<=9;){
    System.out.println(num+"*9="+num*9);
    num++;
}

for(;;){ //没有条件的循环就是一个死循环
    System.out.println("我爱Java");
}
import java.util.Scanner;
//随机加法运算器
public class Addition {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int score = 0; //总分
        for(int i=1;i<=10;i++){ //10次     (1)25+65=?
            int a = (int)(Math.random()*100); //加数a--0到99的随机数
            int b = (int)(Math.random()*100); //加数b--0到99的随机数
            int result = a+b; //存正确答案
            System.out.println("("+i+")"+a+"+"+b+"=?"); //1)出题
            System.out.println("算吧!");
            int answer = scan.nextInt(); //2)答题
            if(answer==-1){ //3)判题
                break;
            }
            if(answer==result){
                System.out.println("答对了");
                score += 10; //答对1题,加10分
            }else{
                System.out.println("答错了");
            }
        }
        System.out.println("总分为:"+score);
    }
}
循环控制

break:跳出循环

for(int num=1;num<=9;num++){
    if(num==4){ //在某种特定条件下,提前结束循环
        break; //跳出循环
    }
    System.out.println(num+"*9="+num*9);
}

/*
   执行过程:
      num=1  1*9=9
      num=2  2*9=18
      num=3  3*9=27
      num=4
*/

continue:跳过循环体中剩余语句而进入下一次循环

//输出9的乘法表,只要不能被3整除
for(int num=1;num<=9;num++){
    if(num%3!=0){
        System.out.println(num+"*9="+num*9);
    }
}

//输出9的乘法表,跳过能被3整除的
for(int num=1;num<=9;num++){
    if(num%3==0){
        continue; //跳过循环体中剩余语句而进入下一次循环
    }
    System.out.println(num+"*9="+num*9);
}
/*
  num=1  1*9=9
  num=2  2*9=18
  num=3
  num=4  4*9=36
  num=5  5*9=45
  num=6
  num=7  7*9=63
  num=8  8*9=72
  num=9
  num=10 false
*/
三种循环结构如何选择:
  • 先看循环是否与次数相关:
    • 若相关-------------------------------------直接上for
    • 若无关,再看第1要素与第3相互的代码是否相同:
      • 若相同--------------------------------直接上do…while
      • 若不同--------------------------------直接上while
嵌套循环:
  • 循环中套循环,常常多行多列时使用,一般外层控制行,内层控制列
  • 执行规则:外层循环走一次,内层循环走所有次
  • 建议:嵌套层数越少越好,能用一层就不用两层,能用两层就不用三层
  • break只能跳出当前一层循环
//九九乘法表
public class MultiTable {
    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(); //换行
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值