Java基础知识(循环)

1、循环的分类

while:事先不需要知道循环执行多少次。(先判断,后执行)
do-while:同上,不知道循环次数。(先执行,后判断)
for:知道循环的次数。

2、while循环
(1)格式及说明

while(继续条件){
 //循环体
    执行语句
}

while执行顺序:当程序遇到while关键字时,JVM首先会运算while后面的条件表达式,当条件表达式为true时,就会执行while后面大括号中的语句,当把大括号中的所有语句执行完之后,会又回到while的条件表达式处再次判断,若还为true,就继续执行大括号中的语句,若为false就跳过大括号中的所有语句,继续往下执行

class whileDemo{
    public static void main(String[] args){
        int i=1;
        while(i<10){
            System.out.println("i"+i);
        }
        System.out.println("over");
    }
}

上述循环是个无限循环(死循环),主要因为是i变量一直为1,每次判断i<10都成立,导致选好条件结束不了。程序永远卡在循环这个地方执行。
(2)图形说明
在这里插入图片描述
(3)注意事项
while循环的括号中的表达式计算结果必须为boolean类型的值。
while循环的括号中不能直接写false常量。
while循环的括号后面不要写分号,循环控制的语句的代码用大括号括起来。
while循环控制的条件变量一定要更新,保证循环能够正常结束。
3、do-while循环
格式及图解

do{
    执行语句;
}while(继续条件);

首先执行循环体,然后计算循环继续条件。如果计算结果为true,则重复执行循环体;如果为false,则终止do-while循环。while循环和do-while循环的差别在于:计算循环继续条件和执行循环体的先后顺序不同
在这里插入图片描述
4、for循环
(1)格式与图解

for(初始操作;循环继续条件;每次迭代后的操作){
    执行语句;
}

在这里插入图片描述
for循环只执行初始动作一次,,当循环继续条件为真时,重复执行循环体中的语句,然后完成每次迭代后的操作。
说明:一般情况下,for循环使用一个变量来控制循环体的执行次数,以及什么时候循环终止,这个变量称之为控制变量。初始化动作是指初始化控制变量,每次迭代后的动作通常会对控制变量做自增或自减,而循环继续条件检验控制变量是否达到终止值。
(2)注意事项
循环继续条件语句的结果是一个boolean类型。
循环体如果是一条语句,大括号可以省略,有左大括号就没有分号,有分号没有左大括号。
(3)嵌套循环
嵌套循环是由一个外层循环和一个或多个内层循环组成的。每当重复执行一次外层循环时将再次进入内部循环,然后重新开始。
5、流程控制
break语句和continue语句
break:终止该层循环。
continue:跳过该层循环。
注意事项:

若这两个语句离开应用范围,存在时没有意义的。
这两个语句单独存在时后面都不能有语句,因为执行不到。
continue语句是跳过本次循环,继续执行下次循环。
标签的出现,可以让这两个语句作用于指定的循环。

break是终止循环,即在程序中遇到break,那么break所属的循环将结束。

for(int x=0;x<3;x++){
    if(x==1)
        break;
    System.out.println("x="+x);
}

continue是结束本次循环,继续执行下次循环,循环是不会结束的。

for(int x=0;x<10;x++){
    if(x%2==0)
        continue;
    System.out.println("x="+x);
}

6、经典例题
(1)编写程序,提示用户输入一个1到15之间的整数,然后显示一个金字塔形状的图案,如下面的运行示例所示:

在这里插入图片描述

import java.util.*;
class Class15{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("Enter the line number:");
        int line=scanner.nextInt();
        for(int i=0;i<line;i++){
            for(int k=0;k<line-i-1;k++){
                System.out.print("\t");
            }
            //i=3 
            for(int j=-i;j<=i;j++){
                System.out.printf("\t"+(Math.abs(j)+1));
            }
            System.out.println();
        }

    }
}
运行结果:

在这里插入图片描述
(2)编写程序读取整数,找出它们的最大数,然后计算该数的出现次数。假设输入是以0结束的。假定输入是3 5 2 5 5 5 0,程序找出最大数5,而5出现的次数是4。
在这里插入图片描述

import java.util.Scanner;
class Home18{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("Enter numbers:");
        int max=Integer.MIN_VALUE;
        int count=0;
        while(true){
            int num=scanner.nextInt();
            if(num==0){
                break;
            }
            if(num>max){
                max=num;
                count=1;
            }else if(num==max){
                count++;
            }
        }
        System.out.println("max="+max+",count="+count);

    }
}

(3)打印空心菱形

class diamond{
/*
                   i       j                  k
        *          1       1                  3
       * *         2       1   2              2
      *   *        3       1   2   3          1
     *     *       4       1   2   3   4      0
      *   *        5       1   2   3          1
       * *         6       1   2              2
        *          7       1                  3
*/
    public static void main(String[] args){
        for(int i=1;i<=7;i++){
            for(int k=1;k<=Math.abs(i-4);k++){
                System.out.print(" ");
            }
            for(int j=1;j<=i&&j+i<=8;j++){
                if(j==1||j==i||j+1==8){
                    System.out.print("*");
                }else{
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值