语言基础4 循环

发布于:2022-10-13 ⋅ 阅读:(396) ⋅ 点赞:(0)

 目录

一.循环三要素:

二. 循环结构:

三种循环结构如何选择:

1.while结构:(先判断后执行 有可能一次都不执行)

2.do while结构:(先执行后判断 一定会执行一次)

 猜数小游戏,scanner if while循环  Math.random()

 3.for结构:应用率高,与次数相关的

 随机加法生成器

 break:提前结束循环

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

4. 嵌套循环 外行循环一次 内行循环所有次:

九九乘法表

拓展练习-等腰小星星


Scanner接收用户输入的数据:共3步

import java.util.Scanner;
Scanner scan=new Scanner(System.in);
int num=scan nextInt();

Scanner就是java给大家提供好的一个零件,它包含了很多很多的功能,
而接收用户输入的数据,只是它其中一个小功能而已

给变量赋值3种情况:

1)赋一个固定的值:
    int a = 5;
2)接收用户输入的数据:----------Scanner
    int a = scan.nextInt();
3)系统随机生成的值:------------下午讲
    Math .random()---------0.0到0.99999999999

    *1000---------------------0.0到999.999999999

   +1--------------------------1.0到1000.99999999

   (int)--------------------1到1000

  int num=(int)(Math.random()*1000+1

任何复杂的业务逻辑都可以通过三种结构来实现:

  • 顺序结构:从上往下逐行执行,每句必走
  • 分支结构:有条件的执行某语句一次,并非每句必走
  • 循环结构:有条件的执行某语句多次,并非每句必走
if(boolean){ //只判断一次
    语句块    //最多执行一次
}


while(boolean){ //判断多次
    语句块       //执行多次
}

一.循环三要素:

  • 循环变量的初始化

  • 循环的条件(以循环变量为基础)

  • 循环变量的改变(向着循环的结束变)

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

二. 循环结构:

三种循环结构如何选择:

   先看循环是否与次数有关:
   若有关------------------------------------------------直接上for
   若无关,再看要素1与要素3代码是否相同
   若相同------------------------------------------直接上do...while
   若不同------------------------------------------直接上while

1.while结构:(先判断后执行 有可能一次都不执行)

1)语法:while(boolean){

              语句块

              }

2)执行过程:

    先判断boolean的值,若为true则执行语句块;

    再判断Boolean的值,若为true则执行语句块;

    再判断Boolean的值,若为false则结束while循环

/写循环先搭架子while() {}  再写循环三要素
        //输出5次行动是成功的阶梯
        int times=0;
        while(times<5){
            System.out.println("行动是成功的阶梯");
            times++;
        }
        //输出9的乘法表
        int num=1;
        while (num<=9){
            System.out.println(num+"*9="+num*9);
            num++;
        }
//写循环,必须要会写执行过程----带数
        /*            num=1
          true 输出   num=2
          true 输出   num=3
          true 输出   num=4
          true 输出   num=5
          ture 输出   num=6
          true 输出   num=7
          true 输出   num=8
          true 输出   num=9
          true 输出   num=10
          false while循环结束
          输出继续执行...

         */

2.do while结构:(先执行后判断 一定会执行一次)

  第一要素和第三要素的代码相同时,首选do..while()

1)语法:

      do{

           语句块/循环体-----反复执行的代码

      } while (boolean) ;

2)执行过程:

   先执行语句块,再判断boolean的值,若为true则

   再执行语句块,再判断boolean的值,若为true则

   再执行语句块,如此反复直到boolean的值为false时,do...while循环结束

 猜数小游戏,scanner if while循环  Math.random()

package day04;
import java.util.Scanner;
public class Guessing {
    public static void main(String[] args) {
        //int num=250;//手里先藏个数
        int num=  (int)(Math.random()*1000+1);//生成随机数

        Scanner scan=new Scanner(System.in);
        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("恭喜你猜对了");
    }
}

 3.for结构:应用率高,与次数相关的

     1. 语法:      

      1初始化循环变量     2循环条件    3循环变量的改变

        (多个for循环中的循环变量可以是一样的:for中的循环变量num的作用域,仅在当前for中)
      

for(要素1;要素2;要素3){
         语句块/循环体---------------反复执行的代码   4
       }

  •        即使没有1,3 也必须有两个分号for(; ;)
  •        2只能有一个boolean条件 多个条件用&&||连接

      2.执行过程


       1243 243 243 243 243...2为false时,for循环结束

 //for中的循环变量num的作用域,仅在当前for中----特殊情况特殊记
     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);
     }
     for(int times=0;times<5;times++){
         System.out.println("行动是成功的阶梯");
     }
     System.out.println("继续执行...");
     /*
        执行过程:-----带数
           times=0  true  输出
           times=1  true  输出
           times=2  true  输出
           times=3  true  输出
           times=4  true  输出
           times=5  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("我要学习...");
     }
     
     for(int i=1,j=5;i<=5;i+=2,j-=2){
     }
     /*
       i=1,j=5  true
       i=3,j=3  true
       i=5,j=1  true
       i=7,j=-1 false
     */


          随机加法生成器

/随机加法运算器
//10题 答对加10分 打错不加分
//反复出题答题判分 用到循环
/* 2个变量 循环次数i 生成的结果result 回答answer 总分score
      总分初始化必须前面 不能放在循环体内
 for(int i=1;i<=10;i++){
     1. 出题
     2. 答题
     3. 判题
}
*/
import java.util.Scanner;
public class bAddition {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        int score=0;
        for(int i=1;i<=10;i++){
            int a=(int)(Math.random()*100);
            int b=(int)(Math.random()*100);
            int result=a+b;
            System.out.println(a+"+"+b);//出题

            System.out.println("请输入答案");
            int answer=scan.nextInt();    //答题
            if(answer==-1){      //加需求 输入-1退出 break
                break;          //需要加载判题的后面 不要输出答错了
            }
            if(answer==result){           //判题
                System.out.println("答对了");
                score+=10;
            }else {
                System.out.println("答错了");
            }
        }
        System.out.println("总分为"+score);

        //1+3+5+7+...+99 等差数列求和
        int sum=0;
        for(int c=1;c<100;c+=2){
            System.out.println(c+"+");
            sum+=c;
        }
        System.out.println("结果为"+sum);


    }
}

 break:提前结束循环

   for(int num=1;num<=9;num++){
       if(num==5){ //在某种特定条件下,提前结束循环
           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  4*9=36
         num=5
   */

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

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

4. 嵌套循环 外行循环一次 内行循环所有次:

  •    - 循环中套循环,常常多行多列时使用,一般外层控制行,内层控制列
  •    - 执行规则:外层循环走一次,内层循环走所有次
  •    - 建议:嵌套层数越少越好,能用一层就不用两层,能用两层就不用三层
  •    - 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");
                 }            //\t水平制表 固定占8位                     
                              //print不换行  println 换行打印
                 System.out.println(); //换行
             }
             /*
               执行过程:
                 num=3
                   i=1  1*3=3
                   i=2  2*3=6
                   i=3  3*3=9
                   i=4  false
                   换行
                 num=2
                   i=1  1*2=2
                   i=2  2*2=4
                   i=3  false
                   换行
                 num=1
                   i=1  1*1=1
                   i=2  false
                   换行
              */
         }
     }

拓展练习-等腰小星星

//1. 利用for循环计算:求数字1到100之内,所有偶数的和,并输出
     int sum=0;
     for(int i=2;i<=100;i+=2){

         sum+=i;
     }
     System.out.println( "sum="+sum);

//2. 利用for循环计算:求8的阶乘,并输出 !8=1*2*3*4*5*6*7*8
     int product=1;
     for(int a=1;a<=8;a++){
         product*=a;

     } System.out.println("阶乘是"+product);

 /* 3. 利用for循环计算:打印字符*组成的等腰三角形,输出结果如下所示:
```java
             *
    ***
   *****
  *******
 *********
***********
```1 1
   2 3
   3 5
   4 7
   5 9
   6 11
*/
     for(int a=1;a<=6;a++){

         for(int b=1;b<=6-a;b++){  //int b=5;b>=6-a;b--){
             System.out.print(" ");//前面加上对应的空格
         }
         for(int c=1;c<=2*a-1;c++){
             System.out.print("*");//每一行中*递增显示 不需要c个*
         }
         System.out.println();//每一行结束后换行
     }

变量的作用域/范围:

从变量的声明开始,到包含它最近的大括号结束

1. 变量的同名问题:

   - 作用域重叠时,变量不能同名


网站公告

今日签到

点亮在社区的每一天
去签到