循环的使用

文章目录

  • 常见的循环
    • 输出99乘法表
    • 输出空心金字塔

常见的循环

  1. while 循环
  2. do…while循环
  3. for循环
  4. (特殊)增强for循环

while循环是最基本的循环
语法:

while(布尔表达式){
 //循环体
}

do…while 循环

do{
//循环体
 }while(布尔表达式)

while 和 do…while的区别
while先判断后执行。do…while先执行后判断
do…while总是保证循环体至少会被执行一次!(主要的区别)

看代码:

public static void main(String[] args) {
        int a=0;
        while(a<0){
            System.out.println("while循环体内的a="+a);
            a++;
        }
        System.out.println("===============");
        do{
            System.out.println("do...while循环体里面的a="+a);
            a++;
        }while(a<0);
    }

运行结果:

===============
do...while循环体里面的a=0
代码解析:
这里的代码并没有进入到while循环里面
因为while循环的条件语句并没有成立

而do...while循环则进行了一次循环,
因为dowhile循环是先执行一次才进行条件的判断的
所以,即使一开始条件不符合也能进入到循环体里面

虽然所有的循环结构都可以用while或者dowhile表示,但java提供了另一种语句——for循环,使一些循环结构变得更加简单

for循环
for循环语句是支持迭代的一种通用结构,是最有效的、最灵活的循环结构。
for循环执行的次数是在执行前就确定的。
语法:

for(初始化;布尔表达式;循环变量迭代){
//循环体
}

增强for循环
语法

for(声明语句:表达式){
//循环体
}

这里的声明语句是声明新的局部变量,
该变量的类型必须和数组或集合的元素的类型一致
表达式:表达式是要访问的数组名

代码举例:

public static void main(String[] args) {
        int numbers[]={100,30,20,10,33,44};
        for (int num:numbers) {
            System.out.println(num);
        }

    }

运行结果:

100
30
20
10
33
44

输出99乘法表

代码:

public static void main(String[] args) {
        for (int i=1;i<=9;i++){
            for (int j=1;j<=i;j++){
                System.out.print(i+"*"+j+"="+i*j+"\t");
            }
            System.out.println();
        }
    }
代码分析:
1.观察99乘法表的规律
每一列:行数逐渐递增,列数不变
       而且 列数<=行数
2.输出格式的调整

运行结果:

1*1=1	
2*1=2	2*2=4	
3*1=3	3*2=6	3*3=9	
4*1=4	4*2=8	4*3=12	4*4=16	
5*1=5	5*2=10	5*3=15	5*4=20	5*5=25	
6*1=6	6*2=12	6*3=18	6*4=24	6*5=30	6*6=36	
7*1=7	7*2=14	7*3=21	7*4=28	7*5=35	7*6=42	7*7=49	
8*1=8	8*2=16	8*3=24	8*4=32	8*5=40	8*6=48	8*7=56	8*8=64	
9*1=9	9*2=18	9*3=27	9*4=36	9*5=45	9*6=54	9*7=63	9*8=72	9*9=81	

输出空心金字塔

    *
   * *
  *   *
 *     *
*********
题目分析:
化繁为简,先死后活

简单:(打印半个金字塔)
*     第一层:1个*
**    第二层:2个*
***   第三层:3个*
****   第四层: 4个*
*****  第五层:5个*

public static void main(String[] args) {
        for (int i=1;i<=5;i++){  //i表示层数
        //控制打印每层的*数
            for (int j=1;j<=i;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }

运行结果:

*
**
***
****
*****
中等:(打印整个金字塔)
    *             //第一层 有1个*   2 * 1 - 1   有4=(总层数-1)个空格
   ***           //第二层 有3个*   2 * 2 - 1   有3=(总层数-2)个空格
  *****         //第三层 有5个*   2 * 3 - 1   有2=(总层数-3)个空格
 *******       //第一层 有7个*   2 * 4 - 1   有1=(总层数-4)个空格
*********     //第一层 有9个*   2 * 5 - 1   有0=(总层数-5)个空格
*数=2*当前层数-1
空格数=总层数-当前层数
public static void main(String[] args) {
        for (int i=1;i<=5;i++){//i表示层数
//            在输出*之前,还要输出 对应空格 总层数-当前层数
            for(int k=1;k<=5-i;k++){
                System.out.print(" ");
            }
//            控制打印* 数
            for (int j=1;j<=i*2-1;j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }

运行结果:

    *
   ***
  *****
 *******
*********
复杂:(空心金字塔)
    *             //第一层 有1个*   当前行的第一个位置是*,最后一个位置也是*
   * *           //第二层 有2个*   当前行的第一个位置是*,最后一个位置也是*
  *   *          //第三层 有2个*   当前行的第一个位置是*,最后一个位置也是*
 *     *        //第一层 有2个*   当前行的第一个位置是*,最后一个位置也是*
*********    //第一层 有9个*   全部输出*

代码:

 public static void main(String[] args) {
        for (int i=1;i<=5;i++){//i表示层数
//            在输出*之前,还要输出 对应空格 总层数-当前层数
            for(int k=1;k<=5-i;k++){
                System.out.print(" ");
            }
//            控制打印* 数
            for (int j=1;j<=i*2-1;j++){
//                当前行的第一个位置是*,最后一个位置也是*,最后一行全部输出
                if(j==1||j==2*i-1||i==5) {
                    System.out.print("*");
                }else {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }

运行结果:

    *
   * *
  *   *
 *     *
*********

最后一步,先死后活:

5 层数做成变量 int num=5;
这样就可以随时改变金字塔的行数了
public static void main(String[] args) {
        int num=5;
        for (int i=1;i<=num;i++){//i表示层数
//            在输出*之前,还要输出 对应空格 总层数-当前层数
            for(int k=1;k<=num-i;k++){
                System.out.print(" ");
            }
//            控制打印* 数
            for (int j=1;j<=i*2-1;j++){
//                当前行的第一个位置是*,最后一个位置也是*,最后一行全部输出
                if(j==1||j==2*i-1||i==num) {
                    System.out.print("*");
                }else {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }

你可能感兴趣的:(java,算法)