精华内容
下载资源
问答
  • java多重嵌套if
    2021-11-25 10:40:12

    Java 跳出多重嵌套语句

    尽管 Java 的设计者将 goto 作为保留字,但实际上并没有打算在语言中使用它。

    ——Java核心技术 卷1(原书第11版)

    Java提供了一种带标签的 break 语句,使用它可以跳出多重嵌套循环,就像下面这样:

    public static void main(String[] args) {
        int x = 1;
        start:
        while(x < 100) {
            int y = 1;
            while(y < 100) {
                for(int z = 1; z < 100; ++z) {
                    if(x == 11) break start;
                    if(x == y && y ==z) {
                        System.out.println("x=y=z=" + x);
                    }
                }
                ++y;
            }
            ++x;
        }
    }
    

    输出结果如下:

    x=y=z=1
    x=y=z=2
    x=y=z=3
    x=y=z=4
    x=y=z=5
    x=y=z=6
    x=y=z=7
    x=y=z=8
    x=y=z=9
    x=y=z=10

    Process finished with exit code 0


    还有一种带标签的continue语句,它将跳转到与标签匹配的循环的首部,写一个测试用例看看效果:

    public static void main(String[] args) {
        start:
        for(int i = 0; i< 18; ++i) {
            for(int j = 0; j < 18; ++j) {
                for(int k = 0; k < 18; ++k) {
                    if(i == 11) continue start;
                    if(i == j && j == k) System.out.println("i=j=k=" + i);
                }
            }
        }
    }
    

    输出结果如下:

    i=j=k=0
    i=j=k=1
    i=j=k=2
    i=j=k=3
    i=j=k=4
    i=j=k=5
    i=j=k=6
    i=j=k=7
    i=j=k=8
    i=j=k=9
    i=j=k=10
    i=j=k=12
    i=j=k=13
    i=j=k=14
    i=j=k=15
    i=j=k=16
    i=j=k=17

    Process finished with exit code 0

    可以看到输出跳过了i=j=k=11


    Curiously, you can apply a label to any statement, even an if statement or a block statement.

    ——Java核心技术 卷1:基础知识. 上(第11版·英文版)

    尝试将标签应用到 if 语句,看看有什么效果:

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        start:
        if(x > 0) {
            System.out.println("x > 0, block executed start...");
            int y = scanner.nextInt();
            if(y > 0) {
                System.out.println("y > 0, block executed start...");
                int z = scanner.nextInt();
                if(z > 0) {
                    System.out.println("z > 0, block executed start...");
                    System.out.println("z > 0, block executed end");
                }else {
                    break start;
                }
                System.out.println("y > 0, block executed end");
            }
            System.out.println("x > 0, block executed end");
        }
    }
    

    下面是两种不同的输入得到的不同的结果:

    • 第一种

      1
      x > 0, block executed start…
      1
      y > 0, block executed start…
      1
      z > 0, block executed start…
      z > 0, block executed end
      y > 0, block executed end
      x > 0, block executed end

      Process finished with exit code 0

    • 第二种

      1
      x > 0, block executed start…
      1
      y > 0, block executed start…
      -1

      Process finished with exit code 0


    带标签的 continue 语句只能应用在循环语句中,而带标签的 break 语句则可以应用在各种复合语句中。

    有一点非常明显,无论是带标签的continue语句,还是带标签的break语句,都只适合在多层嵌套语句的内层使用。对于单层循环来说,使用带标签的continue或者break是不必要的,它们和纯粹的continue语句或break语句效果一样。


    参考资料:

    [1] Cay S.Horstmann 著,林琪 苏钰涵等译.Java核心技术 卷1(原书第11版).北京:机械工业出版社,2020:74-76.

    [2] Cay S.Horstmann.Java核心技术 卷1:基础知识 上(第11版·英文版).北京:人民邮电出版社,2019:103.

    更多相关内容
  • 主要给大家介绍了在Java中如何避免写嵌套if样式的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
  • 主要介绍了Java跳出多重嵌套循环过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了Java跳出多重嵌套循环,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 跟我学java编程—Java嵌套if

    千次阅读 2021-02-12 12:29:05
    除了使用简单if和多重if之外,还可以将整个if块插入另一个if块中,这种结构称为嵌套if嵌套if主要用于只有当前提条件满足时,才判断后续条件是否满足。例如:一个活动计划的安排,如果今天是工作日,则去上班,如果...

    除了使用简单if和多重if之外,还可以将整个if块插入另一个if块中,这种结构称为嵌套if。嵌套if主要用于只有当前提条件满足时,才判断后续条件是否满足。例如:一个活动计划的安排,如果今天是工作日,则去上班,如果今天是周末,则外出游玩;同时,如果周末天气晴朗,则去室外游乐场游玩,否则去室内游乐场游玩。

    嵌套if结构的语法如下:

    0e7984237747d6e825867edce83e85fa.png

    在编写嵌套if结构时,有时会引发一些疑问,下面是一个例子:

    5a873230c8c3dfde5e514cd282b8452e.png

    按条件语句的语法形式,上面的例子似乎有两种可能的解释,第一种理解:外层的if是一个没有else部分的条件语句,最后的else部分属于内层的if语句;第二种理解:内层if是一个不带else部分的条件语句,最后的else属于外层的if条件语句。

    为了避免这种二义性,Java语言规定,每个else部分总是属于前面最近的那个缺少对应的else部分if语句。根据这一规定,上面的例子第一种解释是正确的,第二种解释是不正确的。

    因此,在编写代码时,尽量把嵌入的if语句块用“{”和“}”括起来,避免发生理解上的二义性。如果我们真的需要写出具有第二种意义的嵌套条件语句,那么,就应该采用下面的写法:

    b1dd35fb0295335be867f4bdb27df9eb.png

    示例1:编写一个程序,要求用户输入两个数值,通过嵌套if结构判断两个数值的大小,并输出相应信息。

    在D盘Java目录下,新建“EmbedSample.java”文件。用记事本打开“EmbedSample.java”文件,输入以下代码:

    993ee7ec6bc392037460afee3150ab0a.png

    代码结构分析

    程序功能主要是演示嵌套if结构的使用。

    采用嵌套结构实质上是为了进行多分支选择,判断两个数值的大小实际上有三种选择,即num1=num2、num1num2,这种问题用if-else-if结构也可以完成,而且程序更加清晰。因此,在一般情况下,较少使用if的嵌套结构,以使程序更便于阅读和理解。

    编译“EmbedSample.java”文件,在命令行窗口输入“javac EmbedSample.java”并执行命令,编译通过后,在命令行窗口输入“java EmbedSample”运行Java程序,命令行窗口显示如下信息:

    396ce810c9f92bc60d200fb9a265c02a.png图 7-4 if嵌套结构示例执行结果

    从上述结果可以看出,输入相同或不同的两个数值,程序能够正确判断两个数值的大小。

    73640f72de1bd2daadd766ed5847c1c1.png

    在编写代码时,如果要使用嵌套if结构,尽量把嵌入的if语句块用“{”和“}”括起来,一方面可以提高代码的可理解性和易读性;另一方面也可以预防因if和else匹配错误,使程序发生不可预知的结果,增加程序调试难度。

    061d4cb26eeae9f4fd3570b1deae8305.png

    编写一个程序,要求用嵌套if结构实现。提示用户输入用户名,然后再提示输入密码。如果用户名是"admin"并且密码是“888888”,则提示输入正确,否则提示输入错误。

    展开全文
  • 二、选择结构 如if、else语句,根据条件判断执行哪个语句 1)多重if 2)嵌套if 将整个if块插入另一个if块当中 比如下面这个案例,使用嵌套if比较两个数的大小 【注意:一定要养成加上{}的习惯,否则else可能会和if...

    流程控制包括顺序、选择、循环三种,由于循环结构内容太多,本篇先介绍前两种。

    一、顺序结构

    顾名思义,程序从上到下,依次执行。
    这种仅用于简单的程序运行上面。

    二、选择结构

    如if、else语句,根据条件判断执行哪个语句

    1)多重if

    在这里插入图片描述

    2)嵌套if

    将整个if块插入另一个if块当中
    在这里插入图片描述
    比如下面这个案例,使用嵌套if比较两个数的大小

    【注意:一定要养成加上{}的习惯,否则else可能会和if匹配不上】

    /*使用嵌套if
            比较两个数的大小
             */
            int a = 6, b = 9;
            if (a != b) {
                if (a > b) {
                    System.out.println(a + "比" + b + "大");
                } else {
                    System.out.println(a + "比" + b + "小");
    
                }
            } else {
                System.out.println(a + "和" + b + "相等");
            }
    

    3)switch结构

    注意事项:
    1、判断条件是常量值
    2、大括号不能省
    在这里插入图片描述

    进行的流程是:
    1、先计算表达式的值
    2、用这个计算出的值,与case后面的值进行匹配。如果匹配上,就执行语句。直到遇到break,就跳出执行。
    3、如果这个计算出的值,和case后面的值都匹配不上,那么就执行default的值。
    在这里插入图片描述

    展开全文
  • 流程控制之if多重if嵌套

    千次阅读 2021-03-04 03:18:58
    1、if-else 选择结构语法:if(条件){}else{}ifjava的关键字。表达式是布尔类型的表达式,其结果为true或者false例如:输入一个成绩,如果成绩大于90.奖励import java.util.*;public class if_01 {public static ...

    1、if-else 选择结构

    语法:if(条件){

    }else{

    }

    if是java的关键字。表达式是布尔类型的表达式,其结果为true或者false

    例如:

    输入一个成绩,如果成绩大于90.奖励

    import java.util.*;

    public class if_01 {

    public static void main(String[] args){

    Scanner input=new Scanner(System.in);

    int cj;

    System.out.println("请输入张浩的成绩:");

    cj=input.nextInt();

    if(cj>90){

    System.out.println("奖励iphone5");

    }

    else{

    System.out.println("拖出去晒两个小时");

    }

    }

    }

    2、多重if选择结构

    if(条件){

    }else if(){

    }else{

    }

    多重if各个分支如果顺序互换,语法不报错,但是会影响程序的运行结果 。

    注意:在java中,比较两个字符串是否相同,用的是equals,而不是==号。

    例如:根据张浩的成绩,判断张浩的等级

    package cn.happy.two;

    import java.util.*;

    public class if_duochong {

    public static void main(String[] args){

    Scanner input=new Scanner(System.in);

    System.out.println("请输入张浩的成绩:");

    int cj;

    cj=input.nextInt();

    if(cj>=80){

    System.out.println("良好");

    }

    else if (cj>=60){

    System.out.println("中等");

    }

    else{

    System.out.println("差");

    }

    }

    }

    918a93c34ab3a9cfadfb812906fbda3b.png

    注意:java中产生随机数的方法

    (int)(Math.random()*10);

    范围:从0到1,能取到0,但是取不到1

    3、if的嵌套

    一个ifelse选择结构中,又嵌套了另外一个完成的ifelse选择结构

    if(){

    if(){

    }else{

    }

    }else{

    }

    例如:

    import java.util.Scanner;

    public class if_qiantao {

    public static void main(String[] args){

    Scanner input=new Scanner(System.in);

    //输入学生成绩(秒)

    System.out.println("请输入学生成绩(秒):");

    int cj=input.nextInt();

    //输入学生性别

    System.out.println("请输入学生性别:");

    String sex=input.next();

    if(cj<10){

    if(sex.equals("男")){

    System.out.println("进入男子组");

    }else{

    System.out.println("进入女子组");

    }

    }else{

    System.out.println("淘汰");

    }

    }

    }

    展开全文
  • JAVA中如何跳出当前的多重嵌套循环

    千次阅读 2022-01-13 09:21:52
    JAVA中如何跳出当前的多重嵌套循环
  • if 嵌套if 多重if结构

    千次阅读 2020-12-13 16:26:55
    第三章 1,什么是if选择结构? 就相当于造句,如果…就… 2,if选择结构执行的顺序是什么? if选择结构是根据条件判断之后再做处理,条件为真就进入代码块,条件假就...多重if选择结构的语法 if(条件){ //代码块 }el
  • 生活中,我们经常需要先做判断,然后才决定是否要做某件事情。例如,如果考试成绩大于 90 分,...对于这种“需要先判断条件,条件满足后才执行的情况”,就可以使用 if 条件语句实现。 语法: 执行过程: ...
  • Java if-else 多重嵌套的优化

    千次阅读 2020-01-03 21:15:26
    文章目录1. if-else 多重嵌套的问题2. 解决方案2.1 使用 Map 缓存2.2 switch 简化条件 1. if-else 多重嵌套的问题 2. 解决方案 2.1 使用 Map 缓存 2.2 switch 简化条件
  • Java跳出循环的方法分享
  • Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break 语句,即可跳出外层循环。例如: ok: for(int i=0;i<10;i++) { for(int j=0;j<10;j++) ...
  • Java多重if结构

    2021-02-12 12:22:31
    前面一节已经讨论了简单的条件结构。条件结构用于实现需要判断...在某些情况下,需要检查多重条件,解决这种情况可用多重if、嵌套if或switch结构来解决,本节将具体介绍多重if结构。在进行条件判断时,常常会遇到一...
  • if...else if...else语句if语句后面可以跟elseif…else语句,这种语句可以检测到多种可能的情况。使用if,else if,else语句的时候,需要注意下面几点:if语句至多有1个else语句,else语句在所有的elseif语句之后。...
  • Java如何跳出多重嵌套循环 /** * 两种退出双重循环的方式 */ public class BreakDoubleLoop { public static void main(String[] args) { //1. 定义一个标号,使用break加标号的方式 myfor:for (int i = 0;i<...
  • Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号break语句,即可跳出外层循环。例如: ok: for(int i=0;i<10;i++) { for(int j=0;j<10;j++) { ...
  • 当我们写多重嵌套的循环语句的时候,希望冲内侧的循环,直接跳出到最外层。可以使用带标签的break语句。 public class Test { public static void main(String[] args) { name_1:{ for(int i = 1;i <=10;i...
  • nginx if多重嵌套

    千次阅读 2022-03-24 18:18:08
    nginx 用 set 实现多条件判断 location / { set $flag "0"; if ($http_user_agent !~* "MetaSr") { set $flag "${flag}1";... if ($uri !~* "/api/login") { set $flag "${flag}2"; } if ($flag = "01") {
  • Java中的跳转语句有两种break语句(结束当前循环)和continue语句(跳过当前循环),跳出多重循环可以使用break。 有两种方法 1.标号法:就是
  • 多重if,嵌套if和switch case如何区别使用 ...多重if和嵌套if:判断是否是同一件事情,如果是同一件,用多重嵌套if即多个if不写else的,或者直接使用switch,case。 多重if和switch区别: 如果判断的是区间值
  • Java 中跳出多重嵌套循环的两种方式。 方法一:定义一个标号,使用 break 加标号的方式 方法二:使用全局变量终止循环 方法一,示例代码: myfor:for (int i = 0; i < 100; i++) { for (int j = 0; j < 100; j...
  • JAVA中跳出多重嵌套循环的几种方法

    万次阅读 2019-06-13 13:46:43
    Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号break语句,即可跳出外层循环。例如:ok: for(int i=0;i;i++) { for(int j=0;j;j++) { System.out....
  • java跳出多重嵌套循环

    2018-12-27 16:09:42
    标号是java中的一种特殊标记。可以用于跳出多重循环。 标号必须写在代码块前面,包括for(){},while(){},do{}while(),if(){}和代码块{},当使用break或continue+标号的时候会跳出当前标号的代码块。但continue只能...
  • Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break 语句,即可跳出外层循环。例如: ok: for(int i=0;i<10;i++) { for(int j=0;j<10;j++) { ...
  • Java程序基础 Java程序基础 九江职业技术学院 Jiujiang Vocational & Technical College Java程序基础 分支结构三 分支结构嵌套 Java语言允许对if-else条件语句进行嵌套使用前述分支结构的语句部分可以是任何语句...
  • /** 在Java中如何跳出当前的多重嵌套循环?* 在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,* 然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环*/package java基础题目;...
  • if(id == null || id.isEmpty()){ if(type == null){ if(name==null || name.isEmpty()){ //...select..sql... }else { //...select..sql... } }else { if(name==null || name.isEmpty()){ //...select..sql... }...
  • Javaif else、多重if、switch效率对比详细讲解

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,566
精华内容 7,826
关键字:

java多重嵌套if