【Java全栈学习笔记-U1-day05】循环+跳转语句

本文详细介绍了Java中的循环结构,包括while、do...while和for循环的用法,以及跳转语句break和continue的应用。此外,还讲解了数据类型的转换,并提供了多个编程作业实例,帮助读者巩固学习。
摘要由CSDN通过智能技术生成

【Java全栈学习笔记-U1-day05】循环+跳转语句

day05 循环+跳转语句


课程目标

  1. 循环结构

    While循环、do…while循环、for循环

  2. 跳转语句

    Break、Continue

一、循环结构

while循环、do…while循环、for循环

1.1 while循环

语法:

while(循环条件){
	循环体
}

由用户主导的不确定次数的循环:

//模拟练习作业是否合格。
    Scanner input = new Scanner(System.in);
    System.out.println("作业合格了吗?");
    String answer = input.next();   //y|n
    //循环判断
    while(!answer.equals("y")){ //不合格
        //循环体
        System.out.println("上午学习,下午编码...");
        //询问:修改循环条件的变量
        System.out.println("合格了吗?");
        answer = input.next();
    }

示例:模拟超市结算小程序:

public class Demo2 {
    public static void main(String[] args) {
        //综合练习 :模拟超市结算小程序
        //模拟练习作业是否合格.
        int sum = 0;  //累加器
        int count = 0; //累加件数
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入商品的价格");
        int price = scanner.nextInt();  //n  0  30
        //循环判断
        while(price != 0){  //不合格
            //累计总价
            sum = sum + price;
            count = count + 1;

            System.out.println("请输入商品的价格");
            price = scanner.nextInt();  //n
        }
        System.out.println("共" + count + "件商品");
        System.out.println("总价为:" + sum);
 }

1.2 do…while循环

特点:
先执行在判断
语法:

do{
  循环体...
}while(循环条件);

固定次数的循环:

//使用do...while循环显示1-5的数
int i = 1; //记录循环次数
do{
    System.out.println(i);
    i++;  //累计次数
}while(i <= 5);

用户主导的不确定次数的循环:

public static void main(String[] args) {
    String temp;
    Scanner input = new Scanner(System.in);
    do {
        System.out.println("上午学习,下午练习");
        //询问
        System.out.println("老师,我作业合格了吗:");   //y|n
        temp = input.next();
    }while (!temp.equals("y"));
}

1.3 for循环

作用:
一般用于固定次数循环
语法:

for(变量初始化;变量条件;变量自增自减){
    循环体….
}

显示1-5的数

for (int i = 1; i <= 5; i++){
    System.out.println(i);
}

循环输入五门课的成绩,求平均分

public static void main(String[] args) {
    //循环输入五门课的成绩,求平均分
    Scanner input = new Scanner(System.in);
    //循环输入五门课的成绩
    int sum = 0;

    for (int i = 1; i <= 5; i++) {
        System.out.println("请输入第" + i + "门课的成绩");
        int grade = input.nextInt();
        //累计
        sum = sum + grade;
    }
    //求平均分
    int avg = sum / 5;
    System.out.println("平均分是:" + avg);
}

二、跳转语句

break:表示退出循环
contine:表示退出本次循环,继续下一次

跳转语句一般和if语句结合使用

if(条件)
   跳转语句

综合练习: 实现用户输入用户名和密码实现登入,要求最多三次机会

//实现用户输入用户名和密码实现存入,要求最多三次机会
public static void main(String[] args) {
    //用户名为:admin 密码:123
    Scanner input= new Scanner(System.in);
    for (int i = 1; i <= 3; i++) {
        System.out.println("请输入用户名:");
        String username = input.next();
        System.out.println("请输入密码:");
        String passsword = input.next();
        if (username.equals("admin") && passsword.equals("123")) {
            System.out.println("登入成功");
            break;
        }else {
            int temp = 3 - i;
            if (temp == 0) {
                System.out.println("登录失败,三次机会已经用完");
            } else {
                System.out.println("登入失败,你还有" + temp + "次机会");
            }
        }
    }
}

补充

1.数据类型转换

数据类型由低到高的顺序
byte → char → short → int → long → float → double

2.数据类型转换方式

2.1 隐式转换

数据类型由低到高自动转

2.2 强制(显式)转换

数据类型由高到低

2.3语法
(目标类型)变量;
(int)a;

作业

作业一:使用三种循环分别实现 1-100所有数之和,并熟记三种循环语句

/**
 * @Author: 开心就好9905
 * @Date: 2024/2/22 16:26
 * @Description:作业一:使用三种循环分别实现 1-100所有数之和,并熟记三种循环语句
 */
public class Three_Cycles {
    public static void main(String[] args) {
        int i = 1;  //循环起始点
        int sum = 0;    //总和
        //1. while循环
        /*while(i < 101){
            sum = sum + i;
            i++;
        }*/

        //2. do..while循环
        /*do {
            sum = sum + i;
            i++;
        }while (i <= 100);*/

        //3. for循环
        for (i = 1; i <= 100; i++) {
            sum = sum + i;
        }

        System.out.println(sum);
    }
}

作业二 :使用for循环结构实现:从键盘上接受从周一至周五每天的学习时间(以小时为单位),并计算每日平均学习时间。

import java.util.Scanner;

/**
 * @Author: 开心就好9905
 * @Date: 2024/2/22 16:47
 * @Description:作业二 :使用for循环结构实现:从键盘上接受从周一至周五每天的学习时间(以小时为单位),并计算每日平均学习时间。
 */
public class Average_Study_Time {
    public static void main(String[] args) {
        Scanner input=  new Scanner(System.in);

        double time;    //每日学习时间(h)
        double sum_time = 0;    //总学习时间
        double avg_time;    //平均学习时间

        for (int i = 1; i < 6; i++) {
            System.out.print("请输入周" + i + "的学习时间:");
            time = input.nextDouble();
            sum_time = sum_time + time;
        }
        avg_time = sum_time / 5;
        System.out.println("周平均学习时长为:" + avg_time + "小时");
    }
}

作业三:开发一个标题为“FlipFlop”的游戏应用程序。它从1计数到100,遇到3的倍数就输出单词“Flip”,遇到5的倍数就输出单词“Flop”,既为3的倍数由为5的倍数则输出单词“FlipFlop”,其余情况下输出当前数字。

提示:

​ → 使用%运算符取得数字的余数。

→循环从循环变量i为1开始i循环次数为100。

/**
 * @Author: 开心就好9905
 * @Date: 2024/2/22 18:02
 * @Description:作业三:开发一个标题为“FlipFlop”的游戏应用程序。它从1计数到100,遇到3的倍数就输出单词“Flip”,遇到5的倍数就输出单词“Flop”,
 * 既为3的倍数由为5的倍数则输出单词“FlipFlop”,其余情况下输出当前数字。
 *        提示:
 * 		--- 使用%运算符取得数字的余数。
 * 		--- 循环从循环变量i为1开始i循环次数为100。
 */
public class FlipFlop {
    public static void main(String[] args) {
        for (int i = 1; i < 101; i++) {
            if (i % 3 == 0 && i % 5 == 0){
                System.out.println("FilpFlop:" + i);
            }else if(i % 3 == 0){
                System.out.println("Filp:" + i);
            }else if (i % 5 == 0){
                System.out.println("Flop:" + i);
            }else{
                System.out.println(i);
            }
        }
    }
}

作业四:编写java程序,实现接收用户输入的正整数,输出该数的阶乘。例如,输入数据4,则输出4!=1 × 2 × 3 × 4 =24。要求:限制输入的数据为1~10,否则提示“无效数据”并结束程序。

注意:实现累乘

int sum=1;

import java.util.Scanner;

/**
 * @Author: 开心就好9905
 * @Date: 2024/2/22 18:32
 * @Description:作业四:编写java程序,实现接收用户输入的正整数,输出该数的阶乘。
 * 例如,输入数据4,则输出4!=1 × 2 × 3 × 4 =24。要求:限制输入的数据为1~10,否则提示“无效数据”并结束程序。
 *  注意:实现累乘
 * int sum=1;
 */
public class Multiplicative {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n;  //用户输入的正整数
        int sum = 1;    //阶乘结果

        System.out.print("请输入一个正整数:");
        n = input.nextInt();
        if (n > 0 && n < 11){
            System.out.print(n + "!=");
            for (int i = n; i > 0; i--) {
                sum = sum * i;
                System.out.print(i);
                if (i != 1){
                    System.out.print("x");
                }
            }
            System.out.print("=" + sum);
        }else {
            System.out.println("无效数据");
        }
    }
}

作业五:

作业

import java.util.Scanner;

/**
 * @Author: 开心就好9905
 * @Date: 2024/2/22 18:51
 * @Description:需求说明:商场对顾客的年龄层次进行调查计算各年龄层次的顾客比例
 */
public class Rate_of_Customers {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int customer_age;   //顾客年龄信息
        int upper_30 = 0;   //大于三十岁的人数
        int lower_30 = 0;   //小于三十岁的人数
        int count = 0;  //有效顾客信息总人数
        double rate_upper;  //大于30岁的比例
        double rate_lower;  //小于30岁的比例

        for (int i = 1; i < 11; i++) {
            System.out.print("请输入第" + i + "位顾客的年龄:");
            customer_age = input.nextInt();
            if (customer_age <= 0){
                System.out.println("第" + i +"号顾客信息有误,不录入。");
            }else if(customer_age < 30){
                lower_30++;
                count++;
            }else if (customer_age >= 30){
                upper_30++;
                count++;
            }
        }
        rate_lower = lower_30 * 100 / count;
        rate_upper = upper_30 * 100 / count;
        System.out.println("30岁以下的顾客比例是:" + rate_lower + "%");
        System.out.println("30岁以上的顾客比例是:" + rate_upper + "%");
    }
}

作业六:将上节选做题、使用do…while循环实现,模拟超市结算小程序.

import java.util.Scanner;

/**
 * @Author: 开心就好9905
 * @Date: 2024/2/23 0:10
 * @Description:将上节选做题、使用do...while循环实现,模拟超市结算小程序
 */
public class Supermarket {
    public static void main(String[] args) {
        int price;  //输入商品的价格
        int sum = 0;    //计算总价
        int count = 0;  //计算件数

        Scanner input = new Scanner(System.in);
        System.out.print("请输入商品的价格:");
        price = input.nextInt();
        do {
            sum = sum + price;
            count++;
            System.out.print("请输入商品的价格:");
            price = input.nextInt();
        }while (price != 0);
        System.out.println("共购买" + count + "件商品,实付金额为:" + sum);
    }
}

选做

鸡兔同笼是我国古代著名的趣题之一。大约在1500之前,《孙子算经》中记载了这样一道题目:今有稚兔同笼,上有三十五头,下有九十四足,问鸡兔各几只?试编写程序解决这个问题。

提示:

→定义变量chookNum,rabbitNum分别表示鸡的数量, 兔子的数量,二者有如下两个关系。

chookNum + rabbitNum = 35;

2 * chookNum + 4*rabbitNum = 94;

→鸡的数量chookNum的范围是0<=chookNum<=35,利用循环结构实现。

/**
 * @Author: 开心就好9905
 * @Date: 2024/2/23 0:20
 * @Description:鸡兔同笼是我国古代著名的趣题之一。大约在1500之前,《孙子算经》中记载了这样一道题目:今有稚兔同笼,
 * 上有三十五头,下有九十四足,问鸡兔各几只?试编写程序解决这个问题。
 */
public class Chicken_Rabbit {
    public static void main(String[] args) {
        /*
        //方法一:利用方程关系式推算出结果,但没有循环结构,
        //但不符合题目要求,pass,写着玩一下
        Scanner input = new Scanner(System.in);

        int chickenNum; //鸡的数量
        int rabbitNum;  //兔的数量
        //int heads = input.nextInt();  //头的数量
        //int legs = input.nextInt();   //腿的数量
        int heads = 35; //头的数量
        int legs = 94;  //腿的数量
        //chickenNum + rabbitNum = heads;
        //2 * chickenNum + 4 * rabbitNum = legs;
        chickenNum = 2 * heads - legs / 2;
        rabbitNum = legs / 2 - heads;
        System.out.println("鸡有" + chickenNum + "只,兔有" + rabbitNum +"只。");
         */

        //方法二:穷举
        //Scanner input = new Scanner(System.in);
        int chickenNum; //鸡的数量
        int rabbitNum;  //兔的数量
        //int heads = input.nextInt();  //头的数量
        //int legs = input.nextInt();   //腿的数量
        int heads = 35; //头的数量
        int legs = 94;  //腿的数量
        for (chickenNum = 1; chickenNum <=heads; chickenNum++){
            for (rabbitNum = 1; rabbitNum <= heads; rabbitNum++){
                if (chickenNum + rabbitNum == heads && chickenNum * 2 + rabbitNum * 4 == legs){
                    System.out.println("鸡有" + chickenNum + "只,兔有" + rabbitNum +"只。");
                }
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值