首页 > 编程语言 >后端学习记录~~JavaSE篇(day03-流程控制语句-下-----循环语句)

后端学习记录~~JavaSE篇(day03-流程控制语句-下-----循环语句)

时间:2024-04-07 19:30:53浏览次数:16  
标签:语句 循环体 day03 System while 循环 ----- out

摘要:循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要通过修改循环变量使得循环判断条件为false,从而结束循环,否则循环将一直执行下去,形成死循环。

一. for 循环

for(初始化语句①; 循环条件语句②; 迭代语句④){
    循环体语句③
}

注意:

(1)for(;;)中的两个;是不能多也不能少

(2)循环条件必须是boolean类型

 案例-取余计算:

public class ForCase1 {
    //    int i=1 表达式1 初始化执行1次
//    i<=10 表达式2 条件表达式判断是否为真 ,如果为真,循环日语句(当循环体语句执行完毕后执行表达式三)
//    i++ 表达式3 执行++ -- 继续执行表达式2 ,然后进行判断,再次判断是否执行循环体语句
//    for(int i = 1;i<=10;i++/--){
//        循环体语句
//    }
    public static void main(String[] args) {
//        for (int i = 1; i <= 5; i++) {
//            System.out.println(i);
//        }
//        int i = 0;
//        for (i = 0; i < 5; i++) {
//            System.out.println(i+1);
//        }
//        System.out.println(i);

//        1~100之间3的倍数或以3结尾的数字
        for (int i = 1; i < 101; i++) {
            if (i % 3 == 0 || i % 10 == 3) {
                System.out.println(i);
            }
        }
    }

}

案例-逢七过:

 public static void main(String[] args) {
//        1~100
//            逢七过
        for (int i = 1; i < 101 ; i++) {
            if (i%7==0||i%10==7||i/10==7){
                System.out.println("过");
                continue;//结束当前循环进入下一次
//                break; //结束循环跳出结束
            }
//            else{
                System.out.println(i);
//            }
        }
    }

 死循环:

(1)如果两个;之间写true的话,就表示循环条件成立

(2)如果两个;之间的循环条件省略的话,就默认为循环条件成立

(3)如果循环变量的值不修改,那么循环条件就会永远成立

案例:

public static void main(String[] args) {
        for (; true;){ //条件永远成立
            System.out.println("我爱你!");
        }
    }

二.while 循环

基本格式:

while (循环条件语句①) {
    循环体语句②;
}

注意:        while(循环条件)中循环条件必须是boolean类型

 

执行流程:

  • 第一步:执行循环条件语句①,看循环条件语句的值是true,还是false;

    • 如果是true,执行第二步;

    • 如果是false,循环语句中止,循环不再执行。

  • 第二步:执行循环体语句②;

  • 第三步:循环体语句执行完后,重新从第一步开始再执行一遍

 案例-输出整数1-10

public static void main(String[] args) {
//                      1    2          3
//        for(int i = 0;i<=10;i++){}
//        while(判断表达式){
//            循环体语句
//        }
        int i = 0;
        while (i < 10) {
            i++;
            System.out.println(i);
        }
    }

案例-输入性别判定

public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入性别:");
        while (true){
            String char1 = scan.next();
            if (char1.equals("男")  || char1.equals("女") || char1.equals("保密") ) {
                System.out.println(char1);
                break;
            } else {
                System.out.println("输入无效,请重新输入:");
            }
        }
    }

 死循环:

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int positive = 0;
        int negative = 0;
        while(true){
            System.out.print("请输入整数(0表示结束):");
        	int num = input.nextInt();
            
            if(num > 0){
                positive++;
            }else if(num < 0){
                negative++;
            }else{
                break;
            }
        }
        System.out.println("正数个数:" + positive);
        System.out.println("负数个数:" + negative);

        input.close();
    }

三.do...while

do...while循环语句标准格式:

do {
    循环体语句①;
} while (循环条件语句②);

注意:

(1)while(循环条件)中循环条件必须是boolean类型

(2)do{}while();最后有一个分号

(3)do...while结构的循环体语句是至少会执行一次,这个和for和while是不一样的

 

执行流程:

  • 第一步:执行循环体语句①;

  • 第二步:执行循环条件语句②,看循环条件语句的值是true,还是false;

    • 如果是true,执行第三步;

    • 如果是false,循环语句终止,循环不再执行。

  • 第三步:循环条件语句执行完后,重新从第一步开始再执行一遍

案例-利用do...while 猜大小

public static void main(String[] args) {
//        0-10 如果没有猜对继续输入猜
//        没猜对继续猜
//        猜大猜小了均有提示,猜对了循环结束
        Scanner scan = new Scanner(System.in);
        int random = (int)(Math.random()*11);
//        boolean flag = false;
        int i = 0;
        do {
            System.out.println("请输入您的猜测:");
            int guess = scan.nextInt();
            ++i;
            if (guess==random){
                System.out.println("恭喜你猜对了!");
//                flag =true;
                break;
            }else if (guess < random){
                System.out.println("猜小了请继续猜测");
            }else {
                System.out.println("才猜大了,请继续猜测!");
            }

        }while (true);
        System.out.println("你真是太棒了"+ i+ "次就猜对了");

        scan.close();
    }

 死循环:

do{
     循环体语句;//如果此时循环体中没有跳出循环的语句,就是死循环
}while(true);

注意:

(1)while(true):常量true表示循环条件永远成立

(2)while(循环条件),如果循环条件中的循环变量值不修改,那么循环条件就会永远成立

(3)while()中的循环条件不能空着

四、循环语句的区别

循环次数角度:

  • do while 至少执行一次循环体语句
  • for和while 循环先判定循环条件是否成立,然后再决定是否执行循环体,至少执行0次循环体语句 

如何选择:

  • 遍历有明显的循环次数(范围)的需求,选择for循环

  • 遍历没有明显的循环次数(范围)的需求,循环while循环

  • 如果循环体语句块至少执行一次,可以考虑使用do...while循环

  • 本质上:三种循环之间完全可以互相转换,都能实现循环的功能

循环嵌套:

输出直角三角形以及:

package day0407;

import java.util.Scanner;

public class ForFor1 {
    public static void main(String[] args) {
        输出五行直角三角形
//直接输出
        for (int i = 0; i < 5; i++) {
            for (int j = 0 ; j<=i;j++){
                System.out.print("*"+ "\t");
            }
            System.out.println("" );
        }
        矩形
        for (int i = 0; i < 5; i++) {
            for (int j = 0 ; j<5;j++){
                System.out.print("*"+ "\t");
            }
            System.out.println("" );
        }
//输入行数生成目标三角形
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入行数:");
        int row = scan.nextInt();
        for (int i = 0; i < row; i++) {
            for (int j = 0 ; j<=i;j++){
                System.out.print("*"+ "\t");
            }
            System.out.println("" );
        }
        
    }
}

99乘法表(含制表符版本): 

public class ForFor1 {
    public static void main(String[] args) {
//

//九九乘法表
        for (int i = 1; i < 10; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "*" + i + "=" + (i * j) + "\t");
            }
            System.out.println("");
        }
    }
}

四、循环中的特殊关键字

continue();

使用场景:终止switch或者当前循环

  • 在选择结构switch语句中

  • 在循环语句中

  • 离开使用场景的存在是没有意义的

break();

使用场景:提前结束本次循环,继续下一次的循环

五、==和equals的区别

如果是复杂数据类型,== 进行地址值比较,而不是字面量比较

标签:语句,循环体,day03,System,while,循环,-----,out
From: https://blog.csdn.net/m0_61589682/article/details/137473740

相关文章

  • LeetCode题练习与总结:插入区间--57
    一、题目描述示例 1:输入:intervals=[[1,3],[6,9]],newInterval=[2,5]输出:[[1,5],[6,9]]示例2:输入:intervals=[[1,2],[3,5],[6,7],[8,10],[12,16]],newInterval=[4,8]输出:[[1,2],[3,10],[12,16]]解释:这是因为新的区间[4,8]与[3,5],[6,7],[8,10] 重叠。......
  • 移除元素 -- 力扣第27题 -- 暴力、双指针解法
    题目https://leetcode.cn/problems/remove-element/description/给你一个数组nums 和一个值val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需......
  • 继续分享 Ti-FlowChart 可视化组件 0.2.1
    望向窗外月亮很亮,今晚继续分享组件开发状态。目前版本是0.2.1(npminstallti-flowchart)版本发布LOG:1.UI介入对局部的样式进行规范化。2.新增流转线动效,让用户能直观看出流向。3.新增操作界面的缩放能力,方便用户可以直观全景。组件的目标:组件UI色调大气,成品......
  • LeetCode题练习与总结:最后一个单词的长度--58
    一、题目描述给你一个字符串s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。单词是指仅由字母组成、不包含任何空格字符的最大子字符串。示例1:输入:s="HelloWorld"输出:5解释:最后一个单词是“World”,长度为5。示例2:输入:s="......
  • 【更新】上市公司-ZF环保补贴、补助数据(2008-2022年)
    01、数据简介环保补贴,又称绿色补贴,是ZF在环保领域实施的一种特定补贴。它主要针对那些在经济主体意识上存在偏差或由于资金私有制而无法有效进行环保投资的企业。环保补贴的目的是解决环保问题,帮助企业改进环保设备和工艺,以减少对环境的损害。环保补助1=绿色补贴*100/营业总......
  • 全国地级市-碳排放绩效原始dofile结果数据(含文献及原始数据)2011-2021年
    地级市-碳排放绩效数据的测算,采用GDP、人类发展指数、CO2排放测算碳排放绩效,基于《中国城市统计年鉴》中的数据,经过线性插值和ARIMA方法填补缺失,跨度2011年至2021年。该数据集详细记录了地级市的总碳排放量,但需注意,2008年以前的常住人口和城市化率数据缺失,1999年以前的总碳排放......
  • 【碳中和】上市公司碳信息披露数据-词频统计(1991-2022年)
    数据来源:上市公司年报时间跨度:1991-2022年数据范围:上市公司数据指标:低碳战略、宣传、方针、理念低碳方针低碳战略低碳宣传低碳理念低排放低碳计划低碳意识降碳计划降碳战略低碳发展零碳战略零碳低碳发展战略零低碳能源碳目标......
  • Android11 - 添加自定义服务注意事项
    添加自定义服务注意事项:a:(Android11)快速编译framework.jar./prebuilts/build-tools/linux-x86/bin/ninja-fout/combined-xx.ninjaframework-minus-apexb:在framework/base/core目录下添加文件java和aidl文件后,编译时需要先makeupdate-api去更新current.txt文件,然后才能......
  • openGauss学习笔记-257 openGauss性能调优-使用Plan Hint进行调优-Custom Plan和Gener
    文章目录openGauss学习笔记-257openGauss性能调优-使用PlanHint进行调优-CustomPlan和GenericPlan选择的Hint257.1功能描述257.2语法格式257.3示例openGauss学习笔记-257openGauss性能调优-使用PlanHint进行调优-CustomPlan和GenericPlan选择的Hint257.......
  • SPICE/SpiceyPy学习记录整理(一)-- SPICE概述
    目录一、SPICE概述二、SPICE内核文件三、SpiceToolkitSoftware介绍四、基础概念4.1前言4.2时间4.2.1概念4.2.2时间系统4.3参考系4.3.1参考系的种类4.3.2J2000坐标系与ICRF坐标系的对比4.4坐标系4.5状态4.5.1状态矢量4.5.2坐标转换4.6像差校正......