Java基础--第五天

教学流程:

循环语句[for  while  do while]-----循环嵌套----实例应用

内容总结:

1:循环

  (1)如果我们发现有很多重复的内容的时候,就该考虑使用循环改进代码。

      让代码百年的简洁

  (2)循环的组成

    A:循环体,就是要做的事情。

    B:初始化条件。一般定义的是一个初始变量

    C:判断条件。用于控制循环的结束。

    D:控制条件。用于控制变量的变化。一般都是一个++/--操作。

  (3)循环的分类:

    A:for

      for(初始化条件;判断条件;控制条件)

      {

        循环体;

      }

    执行流程:

      a:先执行初始化条件;

      b:执行判断条件

      c:根据判断条件的返回值:

        true:执行循环体。

        false:就结束循环。

      d:最后执行控制条件。返回到b继续。

    B:while

      初始化条件;

      while(判断条件)

      {

        循环体;

        控制条件;

      }

      执行流程:

        a:先执行初始化条件;

        b:执行判断条件

        c:根据判断条件的返回值:

          true:执行循环体。

          false:就结束循环。

        d:最后执行控制条件。返回到b继续。

    C:do...while

      初始化条件;

      do{

        循环体;

        控制条件;

       }while(判断条件);

      执行流程:

        a:先执行初始化条件;

        b:执行循环体和控制条件;

        c:执行判断条件

        d:根据返回值

          true:返回b

          false:就结束循环。

        注意:

          a:一般使用for循环或者while循环。而且这两种循环是可以等价转换的。

          b:do...while循环至少执行一次循环体。一般不建议使用。

   (4)案例:

    A:请在控制台输出5"我爱Java"

/*
    循环应用,for while do while
    扩充应用之前所学,从那键盘输入数据。
    for、while循环:
    for:预先知道循环应用的范围;
    while:不知道最后执行的次数,但是直到结束点。
    do while:先执行,后判断,一般不建议使用
*/

import java.util.Scanner;
class ManyTimes
{
    public static void main(String[] args)
    {
        //多次输出结果的时候,需要用循环来控制
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入重复打印次数:");
        int runTimes = sc.nextInt();

        for(int x=0;x<runTimes;x++)
        {
            System.out.println("我爱Java!");
        }
        
        System.out.println("---------------------");
        int y=0;
        while(y<runTimes)
        {
            System.out.println("我爱Java!");
            y++;
        }
        System.out.println("---------------------");

        int z=0;
        do{
            System.out.println("我爱Java!");
            z++;
        }while(z<runTimes);

    }
}

B:1-10的和,改进位求1-100的和。

C:1-100之间偶数的和。

/*
    功能需求:    求1-100之和。
                求1-100之间偶数和。
    思路:
    一、
        1,1-100的变量;
        2,和的累加
    二、在一的基础上,挑选出偶数
*/
class NumberAdd
{
    public static void main(String[] args)
    {
        //1,求1-100之和
        int sum = 0;
        for(int x=1;x<=100;x++)
        {
            sum += x;
        }
        System.out.println("1-100的和是:sum = "+sum);

        //2,求1-100的偶数和
        int result = 0;
        for(int x=1;x<=100;x++)
        {
            if(x%2==0)
                result += x;
        }
        System.out.println("1-100的和是:result = "+result);

    }
}

D:5的阶乘。

/*
    输入数据,得到阶乘结果
*/
import java.util.Scanner;
class JieCheng
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入待计算阶乘的数:");
        int num = sc.nextInt();

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

}

E:水仙花。

/**
打印出所有的"水仙花数"。
所谓“水仙花数”是指一个三位数,其每一位数字立方和等于该数本身。例如:
153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 

提示:
1:采用循环取得所有的三位数。(三位数指的是100-999之间的数)。
2:把每个三位数的个位,十位,百位进行分解。

    输出水仙花数:
    100-999之间,每个位上的数的立方和等于这个数的本身的数
思路:
    1,确定范围,使用合适的循环体;
    2,对这个数进行每个位的拆解,除与模联合使用
    3,进行判断
*/

class FlawerDemo 
{
    public static void main(String[] args) 
    {
        for(int x=100;x<1000;x++)
        {
            int bai = x/100;
            int shi = x/10%10;
            int ge = x%10;
            if(x == bai*bai*bai+shi*shi*shi+ge*ge*ge)
            System.out.println(x+"	"+"for循环");
        }
        System.out.println("****************************");
        
        int firstNum = 100;
        while(firstNum<1000)
        {
            int bai = firstNum/100;
            int shi = firstNum/10%10;
            int ge = firstNum%10;
            if(firstNum == bai*bai*bai+shi*shi*shi+ge*ge*ge)
            System.out.println(firstNum+"	"+"while循环");
            firstNum++;
        }
        System.out.println("****************************");
        
        firstNum = 100;
        do
        {
            int bai = firstNum/100;
            int shi = firstNum/10%10;
            int ge = firstNum%10;
            if(firstNum == bai*bai*bai+shi*shi*shi+ge*ge*ge)
            System.out.println(firstNum+"	"+"do while循环");
            firstNum++;
        }while(firstNum<1000);
        System.out.println("****************************");
    }
}

F:统计叠多少次,能叠成珠穆朗玛峰的高度。

/*
    珠峰高度是8848米,一张足够大的纸厚度为0.01米,
    折叠多少次,有珠峰这个高度
*/
class MoutainDemo 
{
    public static void main(String[] args) 
    {
        double height = 0.01;
        int count = 0;
        while(height <= 8848)
        {
            height *=2;
            count++;
        }
        System.out.println("总共叠加次数:"+count);
    }
}

    (5)循环嵌套:

      A:也就是循环语句的循环体是一个循环语句。

      B:通过输出 我们不断的改进。发现了一个问题:外循环控制行数,内循环控制列数。

    (6)案例:

      A:正三角形

        内循环的判断条件:y<=x

      for(int x=0; x<5; x++)

      {

        for(int y=0; y<=x; y++)

        {

          System.out.print("*");

        }

          System.out.println();

      }

      B:倒三角形

        内循环的初始化条件:y=x

      for(int x=0; x<5; x++)

      {

        for(int y=x; y<5; y++)

        {

          System.out.print("*");

        }

          System.out.println();

      }

      C:九九乘法表

/**
    循环嵌套使用
    注意事项:
        1,外层循环控制行数,内存循环控制列数;
        2,换行:System.out.prinlt("
");//System.out.prinltln();
        3,可以考虑进行方法封装。
*/

class ForDouble
{
    public static void main(String[] args) 
    {
        for(int x=0;x<6;x++)
        {
            for(int y=0;y<5;y++)
            {
                System.out.print("*");
            }
            System.out.print("
");//System.out.println();
        }
        //System.out.println("Hello World!");


        //经典实例:九九乘法表
        for(int i=1;i<=9;i++)
        {
            for(int j=1;j<=i;j++)
            {
                System.out.print(i+"*"+j+"="+i*j+"    ");
            }
            System.out.println();
        }

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

        //调用方法,输出矩形
        printStart(8,5); 
        printStart(6,9);
    }

    public static void printStart(int row,int line)
    {
        for(int i=0;i<row;i++)
        {
            for(int j=0;j<line;j++)
            {
                System.out.print("*");
            }
            System.out.print("
");
        }
    }
}

2breakcontinue

  (1)有些时候,我们需要对循环进行一些控制终止,这个时候,就出现了两个关键字:

    breakcontinue

  (2)特点:

    A:它们都必须在循环中(break还可以在switch中。)

        一般在循环的判断中。

    B:如果单独使用breakcontinue,后面是不能有语句的。

  (3)区别:

    A:break 结束当前循环。

    B:continue 结束本次循环,进入下一次循环。

  (4)如何退出嵌套循环:

    用带标签的循环。

    格式:

    标签名:for(){

        for(){

            if()

            {

              break 标签名;//continue也能用,但是注意别形成死循环

            }

          }

         }

3:应用场景

  (1)变量:发现有一个数据是变化的时候,就要用变量。

  (2)if语句:如果是一个范围的判断,boolean类型的表达式的判断,几个数据的判断。

  (3)switch语句:几个数据的判断。一般这种情况,有限选择switch

  (4)for语句:如果次数或者范围特别明确。(水仙花)

  (5)while语句:如果次数或者范围不明确。(珠穆朗玛峰)

原文地址:https://www.cnblogs.com/zhidianhcuan/p/4343215.html