Java入门(五):控制流程

浅谈Java中的中断控制流程语句 Java语言的流程控制特性,包括控制跳转语句和中断控制流程语句两大类。 控制跳转语句包括条件跳转和循环跳转。 而中断控制流程语句包括break,continue,return等。 这里浅谈一下中断控制语句。 先说说循环跳转的起源,在很久之前,人们最开始采用的是goto语句来完成程序执行流的跳转功能。但随着实践和研究的深入,人们发现“过多地使用goto语句是有害的”,后来经过许多大牛们的商量... 阅读详情

在Java中,使用条件语句和循环结构确定控制流程,在本文中,主要包括块作用域、条件语句、循环结构、中断循环这四部分。

一、块作用域

块,也叫复合语句,是指由一对大括号括起来的若干条Java语句。块决定了变量的作用域。一个块可以嵌套多个块。

二、条件语句

如果判断超过三层,建议拆分开来写,这样更加清晰。

package javalearningday04;

/**
 * 条件语句
 * @author 小川94
 * @date 2018年1月31日
 */
public class IfElseDemo {

    public static void main(String[] args) {
        testMethod(78);
    }
    
    /**
     * 判断成绩
     */
    public static void testMethod(int score) {
        if (score < 0) {
            System.out.println("请传入正确的分数!");
        } else {
            if (score >= 90 && score <= 100) {
                System.out.println("成绩优秀");
            } else if (score >= 80) {
                System.out.println("成绩良好");
            } else if (score >= 70) {
                System.out.println("成绩一般");
            } else if (score >= 60) {
                System.out.println("成绩及格");
            } else {
                System.out.println("不及格");
            }
        }
    }
}

三、循环结构

3.1 for循环

package javalearningday04;

/**
 * for循环的用法
 * @author 小川94
 * @date 2018年1月31日
 */
public class ForDemo {
    
    public static void main(String[] args) {
        testMethod();
        testMethod2();
    }
    
    /**
     * 计算1,2,3...,100的和
     */
    public static void testMethod() {
        int sum = 0;
        for (int i=1; i<101; i++) {
            sum += i;
        }
        System.out.println(sum); //sum = 5050
    }
    
    public static void testMethod2() {
        String[] strArray = {"小明","小马","小王"};
        // foreach循环遍历
        for (String str : strArray) {
            System.out.println(str); // 依次打印 小明  小马  小王
        }
        // 两种写法的输出结果都是一样的
        for (int i=0; i<strArray.length; i++) {
            System.out.println(strArray[i]); // 依次打印 小明  小马  小王
        }
    }
    
}

3.2 do{...}while()循环

先执行,再判断。无论while中的条件是否成立,都会执行一次循环体。

package javalearningday04;

/**
 * do{}while();的用法
 * @author 小川94
 * @date 2018年1月31日
 */
public class DoWhileDemo {

    public static void main(String[] args) {
        testMethod();
        testMethod2();
    }
    
    /**
     * 计算1,2,3...,100的和
     * 先执行,后判断
     */
    public static void testMethod() {
        int i = 1;
        int sum = 0;
        do{
            sum += i;
            i++;
        }while(i<101);
        System.out.println(sum); // sum = 5050
        System.out.println(i); // i = 101
    }
    
    /**
     * do{}while();的循环结构,至少会执行一次循环体
     * 在while中的条件不成立时,已经执行了一次循环体
     */
    public static void testMethod2() {
        int i = 1;
        int sum = 0;
        do{
            sum += i;
            i++;
        }while(i<1);
        System.out.println(sum); // sum = 1
        System.out.println(i); // i = 2
    }
}

3.3 while(){...}循环

先判断,再执行。只有条件成立,才会进入循环体。

package javalearningday04;

/**
 * while(){}的用法
 * @author 小川94
 * @date 2018年1月31日
 */
public class WhileDemo {

    public static void main(String[] args) {
        testMethod();
        testMethod2();
    }
    
    /**
     * 计算1,2,3...,100的和
     * 先判断,后执行
     */
    public static void testMethod() {
        int i = 1;
        int sum = 0;
        while( i<101 ){
            sum += i;
            i++;
        }
        System.out.println(sum); // sum = 5050
        System.out.println(i); // i = 101
    }
    
    /**
     * 只有while()中的条件成立时,才会执行循环体
     * 如果while()中的条件永久为true,则会进入死循环,对程序会造成非常严重的后果,
     * 开发中需要严格判断循环条件!避免出现死循环
     */
    public static void testMethod2() {
        int i = 1;
        int sum = 0;
        while( i<1 ){
            sum += i;
            i++;
        }
        System.out.println(sum); // sum = 0
        System.out.println(i); // i = 1
    }
    
}

3.4 独特的switch{}

package javalearningday04;

/**
 * switch{}的用法
 * @author 小川94
 * @date 2018年1月31日
 */
public class SwitchCaseDemo {

    public static void main(String[] args) {
        testMethodWithInt(3);
        testMethodWithByte((byte)3);
        testMethodWithChar((char)3);
        testMethodWithShort((short)3);
        testMethodWithString("MONDAY");
        testMethodWithEnum(SIZE.MEDIUM);
        testSwitchWithoutBreak("MONDAY");
    }
    
    // 支持int
    public static void testMethodWithInt(int num) {
        switch (num) {
            case 0:
                System.out.println("num等于0");
                break;
            default:
                System.out.println(num);
                break;
        }
    }
    
    // 支持byte
    public static void testMethodWithByte(byte num) {
        switch (num) {
            case 0:
                System.out.println("num等于0");
                break;
            default:
                System.out.println(num);
                break;
        }
    }
    
    // 支持char
    public static void testMethodWithChar(char num) {
        switch (num) {
            case 0:
                System.out.println("num等于0");
                break;
            default:
                System.out.println(num);
                break;
        }
    }
    
    // 支持short
    public static void testMethodWithShort(short num) {
        switch (num) {
            case 0:
                System.out.println("num等于0");
                break;
            default:
                System.out.println(num);
                break;
        }
    }
    
    // 支持字符串
    public static void testMethodWithString(String str) {
        switch (str) {
            case "MONDAY":
                System.out.println("是星期一");
                break;
            default:
                System.out.println(str);
                break;
        }
    }
    
    public enum SIZE{
        // 小号
        SMALL,
        // 中号
        MEDIUM,
        // 大号
        LARGE;
    }
    
    public SIZE size;
    
    public SwitchCaseDemo(SIZE size) {
        this.size = size;
    }
    // 支持枚举类型
    public static void testMethodWithEnum(SIZE size) {
        switch (size) {
            case SMALL:
                System.out.println("是小号");
                break;
            case MEDIUM:
                System.out.println("是中号");
                break;
            case LARGE:
                System.out.println("是大号");
                break;
            default:
                System.out.println("没有其他号了");
                break;
        }
    }
    
    // 不写break语句,则每种情况都会执行
    public static void testSwitchWithoutBreak(String str) {
        switch (str) {
            case "MONDAY":
                System.out.println("吃包子");
            case "SUNDAY":
                System.out.println("吃面条");
            default:
                System.out.println("喝粥");
        }
    }
    
    // 不支持long类型的数据
    /*public static void testMethodWithLong(long num) {
        switch (num) {
            case 0:
                System.out.println("num等于0");
                break;
            default:
                System.out.println(num);
                break;
        }
    }*/
    
    // 不支持double类型的数据
    /*public static void testMethodWithDouble(double num) {
        switch (num) {
            case 0:
                System.out.println("num等于0");
                break;
            default:
                System.out.println(num);
                break;
        }
    }*/
}

四、中断循环

中断循环需要用到两个关键字,一是continue,另一个是break。

continue是指将其后面的执行语句跳过,进入下一次新的循环,整个循环结构是还在运行的,没有终止。

break是指结束掉整个循环结构,开始执行整个循环结构的后面的代码。

package javalearningday04;

/**
 * continue、break的用法
 * @author 小川94
 * @date 2018年1月31日
 */
public class ContinueBreakDemo {

    public static void main(String[] args) {
        testContinue();
        testBreak();
    }
    
    /**
     * 求数组中正数的和
     * continue:在执行完continue语句后,其后的代码都不再执行,
     *          结束本次循环,进入下一次循环,整个循环结构还在继续执行
     */
    public static void testContinue() {
        int[] arr = {1,2,3,4,-5,6};
        int sum = 0;
        for(int i=0; i<arr.length; i++){
            if (arr[i]<0) { //过滤数组中的负数
                continue; 
            } else {
                sum += arr[i];
            }
        }
        // 跳过-5,计算1+2+3+4+6的和
        System.out.println(sum); // sum = 16
    }
    
    /**
     * break:在执行完break语句后,其后的代码都不再执行,
     *       结束整个循环结构,
     */
    public static void testBreak() {
        int[] arr = {1,2,3,4,-5,6};
        int sum = 0;
        for(int i=0; i<arr.length; i++){
            if (arr[i]<0) { 
                break; // 与上面的代码一样,只是将continue换成了break
            } else {
                sum += arr[i];
            }
        }
        // 只会计算1+2+3+4的和
        System.out.println(sum); // sum = 10
    }
}

上面的代码都上传至了GitHub,地址是https://github.com/XiaoChuan94/javalearning/tree/master/javalearningday04,有需要的可以去下载观看,如果喜欢就给个star吧!如有不足,欢迎下方留言交流。

 

文章首发于我的个人公众号:悦乐书。喜欢分享一路上听过的歌,看过的电影,读过的书,敲过的代码,深夜的沉思。期待你的关注!

公众号后台输入关键字“Java学习电子书”,即可获得12本Java学习相关的电子书资源,如果经济能力允许,还请支持图书作者的纸质正版书籍,创作不易。

【Java基础知识 15】Java控制流程语句 Java控制流相关的关键字包括ifelse、while、do-while、for、return、break、Switch。 阅读详情

相关推荐

java技术专家 【java基础详解】 3. 控制流程

java技术专家 【java基础详解】 3. 控制流程

大壮 1057

Java 枚举

枚举类型是一种特殊的数据类型,它允许变量是一组预定义的常量。变量必须等于其预定义的值之一。在生活中有很多关于枚举的例子,例如表示星期的 SUNDAY(星期日)、 MONDAY (星期一)、TUESDAY(星期二)、 WEDNESDAY (星期三)、THURSDAY(星期四)、 FRIDAY (星期五)、SATURDAY(星期六) 就可以定义一个枚举。

kevin 913

Java零基础入门-控制流程

控制流程在软件开发中具有重要意义,它可以控制程序运行的顺序和逻辑,让程序更加灵活、高效。本文将以Java开发语言为例,深入探讨Java中的控制流程。本文主要介绍了Java中的三种控制流程语句:顺序结构、分支结构和循环结构。并且通过源代码解析、应用场景案例、优缺点分析、类代码方法介绍以及测试用例等方面,深入探讨了Java中控制流程的实现方式和应用场景。Java是一种面向对象的编程语言,其控制流程结构与其他编程语言有许多相似之处。Java中控制流程语句主要有三种:顺序结构、分支结构和循环结构。

喵手的博客 1929

分支结构之switch

代码如下: import java.sql.SQLOutput; import java.util.Scanner; public class demo2 { public static void main(String[] args) { Scanner lo=new Scanner(System.in); System.out.println("输入一个数字,帮你输入对应的星期"); int day = lo.nextInt();

m0_58527532的博客 423

智能优化算法-北方苍鹰优化算法(NGO)(附源码)

北方苍鹰优化算法 (Northern Goshawk Optimizer, NGO) 是一种基于群体智能的元启发式优化算法,它模拟了北方苍鹰(Northern Goshawk)的捕食行为、领地行为以及社交互动,用于解决复杂的优化问题。总之,NGO作为一种新颖的优化算法,在处理复杂优化问题方面展现出了潜力。随着进一步的研究和应用,NGO有望成为解决实际问题的有效工具。

w971656545的博客 1362

【Rcode】生存分析: KM & COX回归& 随机森林& nomogram

本文使用了R——survival包下的lung数据进行方法测试: 1)KM 2) Cox回归:多因素 3)随机森林因子(根据cox回归结果) 4)nomogram ( 根据cox回归结果,建立了中位生存时间,1年5年生存率的概率计算) -------------------????????‍♀️本文只有干货,非常干!????----------------------------- 一、数据加载 #生存分析 library("survival") library("survminer") data("

weixin_43172152的博客 9275

伺服系统

伺服系统(servomechanism)是使物体的位置、方位、状态等输出被控量能够跟随输入目标(或给定值)的任意变化的自动控制系统。它的主要任务是按控制命令的要求、对功率进行放大、变换与调控等处理,使驱动装置输出的力矩、速度和位置控制的非常灵活方便。 基本概念   伺服系统是用来精确地跟随或复现某个过程的反馈控制系统。又称随动系统。在很多情况下,伺服系统专指被控制量(系统的输出量)是机械位

SlimApp 1569

别再死记硬背了!用Wireshark抓包实战,5分钟搞懂GRE、L2TP、IPsec的区别

本文通过Wireshark抓包实战,详细解析GRE、L2TP和IPsec三大隧道协议的核心差异与应用场景。从报文结构到配置示例,帮助网络工程师快速掌握这些协议的本质,提升VPN部署与故障排查能力。特别适合准备HCIP认证的工程师深化理解。

weixin_30352645的博客 439

【Java】5 全面认识java的控制流程

全面认识java控制流程1.块作用域2.条件语句3.迭代语句3.1while语句3.2do-while语句3.3for语句34 for-in语法4.中断控制流程的语句4.1 return4.2 break和continue4.2.1 不带标签的break语句4.2.2 带标签的break语句4.2.3 continue语句4.3 goto()5.多重选择:switch语句

爱书不爱输的程序猿 1151

Allegro PCB设计实战:5分钟搞定DDR信号线的Match Group等长规则设置

本文详细介绍了在Allegro PCB设计中,如何快速为DDR信号线设置Match Group等长规则。通过实战演练,解析了从理解相对传输延迟原理、在规则管理器中创建Match Group,到设置合理容差和利用动态绕线指示的全流程,帮助工程师在5分钟内高效完成高速信号时序约束,提升设计可靠性与效率。

gg901的博客 1055

超详细版risc-v五级流水线cpu硬件设计实现解析

深入剖析risc-v五级流水线cpu的硬件架构与设计细节,涵盖指令流程、模块划分与关键时序控制,帮助理解risc-v五级流水线cpu的工作机制与优化策略。

weixin_42437253的博客 1636

零基础入门学习java第八节:Java的控制流程

零基础入门学习java第八节:Java的控制流程 什么是控制流程?简单来说就是控制程序运行逻辑的,因为程序一般而言不会直接一步运行到底,而是需要加上一些判断,一些循环等等。举个栗子,就好比你准备出门买个苹果,把这个过程当成程序的话,可能需要先判断一下外面是否下雨,下雨的话就得带伞,否则就直接出门,同时,外面可能有很多家水果店,那去哪家买呢?这里把价格放在第一要素,所以你会一家一家跑,直到找...

tzllxya的博客 242

安防相机宽动态(WDR)技术解析:从原理到实战应用

本文深入解析安防相机宽动态(WDR)技术原理,对比多次曝光与DOL-WDR等实现方式,并区分硬件WDR与数字WDR(DWDR)的本质差异。文章重点阐述了WDR在逆光出入口、夜间道路监控等五大典型场景的实战应用与调参技巧,旨在帮助用户根据实际需求正确选择与配置,确保监控系统在复杂光线下清晰成像。

weixin_29191081的博客 429

Java基础语法:控制流程解析

1. 条件执行结构if-thenswitch2. 循环结构forwhiledo-while3. 跳转结构breakcontinuereturnthrow控制结构使用频率典型场景if43.7%条件判断for28.5%集合遍历while12.3%不确定循环switch8.2%多分支选择其他7.3%流程跳转。

u012847288的博客 1696

吃透工业通信:C#工控机实现Modbus、OPC UA、Profinet、EtherCAT协议全适配

本文介绍了基于C#的工业通信协议全适配方案,采用分层架构设计实现Modbus、OPC UA、Profinet和EtherCAT四种主流协议的统一管理。核心包括:1)三层架构(应用层、抽象层、协议层)降低耦合;2)定义统一通信接口IIndustrialCommunication;3)工厂模式创建不同协议实例;4)以Modbus TCP为例展示具体实现。该方案经过实际项目验证,可简化多协议设备管理,提升工业自动化系统的开发效率。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 725

5.7 医疗 Agent 实战:构建一个懂“望闻问切”的智能医疗咨询助手

本文介绍了如何构建一个智能医疗咨询助手项目,通过LoRA微调和vLLM部署技术,将通用大模型改造为专业"AI皮肤科医生"。项目采用精简架构:Streamlit前端直接与vLLM推理服务通信,重点展示了微调模型在专业性、安全性和同理心方面的显著提升。实施步骤包括:部署微调模型、构建交互界面,并通过对比测试验证微调效果。项目强调AI仅作为咨询助手而非医生替代品,始终以引导用户寻求专业医疗帮助为核心目标,体现了负责任AI应用的关键原则。

yonggeit的博客 2962

java基础入门(一)

前言: 1. 笔者的java没有经过真正系统的学习过,只是跟着书上自学的。所以有些地方难免会理解错误之类的,如果看到错误的地方,请指出来,或者有什么不理解的地方也可以提出来,大家一起进步。 2. 这篇教程是一个学习方向的引导,且只针对基础入门(更加进阶的知识笔者也还在学习)。 3. java的基础入门知识网上有很多,很多大神的博客里也有总结,笔者不认为自己能比大神总结的好。所以在这篇教程里,...

man_zuo的博客 17万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java基础05-Java控制流程:掌握if-else、switch和循环语句

Java 控制流程语句摘要 Java 控制流程语句包括条件判断(if-else, switch)和循环结构(for, while, do-while)。if-else 通过布尔条件执行不同代码块,支持多条件判断(if-else if);switch 适用于多固定值匹配,支持整数、字符串和枚举类型。循环语句中,for 适用于明确次数的循环,while 在条件满足时循环,do-while 至少执行一次。这些结构是程序逻辑的核心,合理组合使用可以构建清晰的代码流程。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java控制流程(顺序结构、分支结构、循环结构)

Java控制流程(顺序结构、分支结构、循环结构)

m0_63692093的博客 2149

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

浅析Java中控制流程关键字:if、else、switch、continue等

在Java编程中,控制流程关键字决定了程序的执行路径和逻辑。条件控制语句(如if-else和switch)、循环控制语句(如forwhile和do-while)、跳转控制语句(如breakcontinue和return)以及异常处理控制(如)是开发者编写高效、可读代码的重要工具。通过熟练掌握这些关键字,开发者可以构建更加灵活、健壮的程序。

m0_55399448的博客 1549

【Java核心技术卷一】控制流程

控制流程1、块作用域2、条件语句3、循环4、确定循环5、多重选择:switch语句6、中断控制流程语句 1、块作用域 块(即复合语句)是指由一对大括号括起来的若干条简单的 Java 语句。 块确定了变量的作用域。 一个块可以嵌套在另一个块中。不能在嵌套的两个块中声明同名的变量。 2、条件语句 条件语句格式:if (condition) statement Java 常常希望在某个条件为真时执行多条语句。在这种情况下, 应该使用块语句 (block statement), 形 式 为 { statem

weixin_43859246的博客 333

5.控制流程【Java温故系列】

本文主要对Java的块作用域,以及各种常见语句的使用进行简要记述

苏纳法 201

01_java基础-控制流程

01java基础-控制流程1、条件语句2、循环语句3、确定循环4、多重选择:switch语句5、中断控制流程语句 java使用条件语句和循环语句确定控制流程 块(block):由一对大括号括起来的,确定了变量的作用域 不能在嵌套的两个块中声明同名的变量 1、条件语句 if(condition)statement 条件必须用括号括起来 if(condition) { statement1 ...

Sasza7的博客 200

Java基础知识总结之控制流程

流程是指程序运行时,各语句的执行顺序。控制流程就是用来控制程序中各语句执行的顺序。控制流程结构分为顺序结构、选择结构和循环结构三种。本文主要对Java的控制流程进行简单总结。

RtxTitanV的博客 1431

Java入门·Java控制流程·if判断用法·while循环用法· for循环用法

03_控制流程 本章知识脉络图 Scanner 他是一个引用类型,接受键盘输入数据 声明形式:引用类型 名称 = new 引用类型(); 例: if if-else语法: if(判断条件) { 代码块; }else{ 代码块2; } 执行: *1.首先判断条件是否成立,true或者false *2.如果是true,执行if里面的代码块,如果是fals...

zjlwdqca的博客 312
上一篇: Java入门(四):运算符优先级、关键字与保留字
下一篇: Java入门(六):数组
程序员小川
博客等级 码龄10年 47粉丝 305原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值