Java基础:循环结构(while,do-while,for)及“鸡兔同笼”问题、计算阶乘

目录

while结构(次数不固定的循环优先选用)

do-while结构(必须先执行后判断的循环优先使用)

fori结构(次数固定的循环优先选用)

  1.鸡兔同笼问题

  2.计算阶乘


循环结构是为了解决生活中重复发生的场景。

循环结构由三个要素组成,分别为循环变量、循环体和循环终止条件。

  • 循环结构:也称为重复结构,程序中反复执行的一组指令或程序段
  • 循环体:被反复执行的程序段
  • 循环变量:用来控制循环是否继续进行的变量

常见的循环结构有三种,为while循环、do while循环以及for循环。

while结构(次数不固定的循环优先选用)

格式:

变量定义

while(条件){

        //循环代码

        //变量值的改变

}

图解:

步骤:

第一,循环变量初始化(在while之前);

第二,判断循环条件,如果判断结果为真,则进入循环体;如果为假则不执行循环体;

第三,执行循环体;

第四,执行循环控制变量增量,转入第二步。

案例:

import java.util.Scanner;

/**
 * while循环
 * 老师每天检查张浩的学习任务是否合格,如果不合格,则继续进行
 * 老师给张浩安排的每天的学习任务为:上午阅读教材,学习理论部分
 * 下午上级编程,掌握代码部分
 */
public class Demo1 {
    public static void main(String[] args) {
        //定总循环次数,当前循环次数:需要确定循环的条件
        //确定循环的内容

        Scanner sc=new Scanner(System.in);

        String isPassed="不合格";
        while (!"合格".equals(isPassed)){//isPassed与“合格”比较,当isPassed是“合格”的时候,不做循环,即当isPassed不是“合格”的时候做循环
            if(!isPassed.equals("不合格")){//循环体内,isPassed不是“合格”。如果isPassed也不是“不合格”,说明输入错误。
                System.out.println("您的输入不正确,请重新输入!");
            }
            else{//不合格,继续布置任务
                System.out.println("张浩的学习任务为:上午理论,下午代码");
            }
            System.out.println("老师检查张浩学习任务的结果:(合格/不合格)");//询问是否合格
            isPassed=sc.next();//输入
        }
        System.out.println("恭喜张浩完成学习任务!");//出了循环,说明张浩合格了

    }
}

do-while结构(必须先执行后判断的循环优先使用)

格式:

变量定义

do{

        //循环代码

}while(条件);

图解:

步骤:

第一,循环变量初始化(在do while之前);

第二,先执行循环体;

第三,执行循环控制变量增量;

第四,再判断循环条件,如果判断结果为真,则返回第二步;如果为假则直接退出循环。

案例: 

import java.util.Scanner;

public class Demo2 {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        String  result =null;
        do{
            System.out.println("老师给张浩考题,张浩上机测验,老师检查结果:(合格/不合格)");
            result=s.next();
        }while (result.equals("不合格"));
        System.out.println("恭喜张浩通过测试");
    }
}

fori结构(次数固定的循环优先选用)

格式:

for(变量定义;条件;变量值的改变){

        //循环代码

}

图解:

步骤:

第一,循环变量初始化;

第二,判断循环条件,如果判断结果为真,进入循环体;如果为假,则循环终止;

第三,执行循环体;

第四,执行循环控制变量增量,转入第二步。

案例:

import java.util.Scanner;

/**
 * for循环
 * 循环输入某同学结业考试的5门课程成绩,并计算平均分
 */
public class Demo3 {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        double sum=0;
        int i = 0;
        //快捷5.fori()
        for (; i < 5; i++) {
            System.out.println("请输入第"+(i+1)+"门课的成绩:");
            double score=input.nextDouble();
            sum+=score;//sum=sum+score;
        }
        double avg=sum/i;
        System.out.println("平均分为:"+avg);
    }
}

多重循环

多重循环的特点:

​    循环中嵌套循环

​    外层循环的变量变化一次,内层循环的变量变化一整轮

循环控制

break:跳出当前循环体,for循环变量改变的部分不会运行

continue:跳过当前循环体本次循环的后续代码,继续下一轮循环

​                    for循环变量改变的部分会运行

return:跳出当前方法体

System.exit(status:状态码):中断程序,并返回对应的状态码  //强制退出,风险太高,无法恢复,可能导致系统崩溃(不建议用)

练习

1.鸡兔同笼问题

 今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?
提示:定义变量chickenNum、rabbitNum分别表示鸡的数量、兔子的数量,二者有如下两个关系: chickenNum+rabbitNum=35 chickenNum*2+rabbitNum*4=94 鸡的数量chickenNum范围是0<=chickenNum<=35,利用循环结构解决上述问题。

public class ChickenRabbit {
    public static void main(String[] args) {
        int cNum=0, rNum=0;
        for(;cNum<=35;cNum++){
            rNum=35-cNum;
            if(2*cNum+4*rNum==94){
                break;
            }
        }
        System.out.println("鸡有"+cNum+"只,兔有"+rNum+"只。");
    }
}

2.计算阶乘

从控制台输入一个正整数,计算该数的阶乘。例如输入5,阶乘为 5*4*3*2*1

public class Factorial {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.println("请输入一个正整数:");
        int num=input.nextInt();
        System.out.println(num+"的阶乘为:");
        int mul=1;
        for(int i=num;i>1;i--){
            mul*=i;
            System.out.print(i+"*");
        }
        System.out.println("1="+mul);
    }
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值