• Java基本的程序结构设计 控制流程


    控制流程

    java的控制流程和C和C++基本一致,只是不能使用goto语句,不过break语句可以带标签,实现从内层循环跳出的目的。标签可以放在for或者while前面。如下:

    1. package com.zjf;
    2.  
    3. import java.io.Console;
    4. import java.util.Scanner;
    5.  
    6. public class Test {
    7.  
    8.    public static void main(String[] args) {
    9.       outer: for(int i=0;i<5;i++){
    10.             for(int j=0;j<5;j++){
    11.                 System.out.println("i="+i+"j="+j);
    12.                 if(j==3){
    13.                     break outer;
    14.                 }
    15.             }
    16.         }
    17.     }
    18. }

    块作用域:

    java是块作用域,这点和js不一样。

    while循环

    while循环有两种:

    while()

    {

        //do some thing

    }

    do

    {

    //do some thing

    }

    while()

    for循环

    for(初始化;继续循环的条件,更新)

    虽然如此,不建议在for循环里有复杂逻辑,最好是对变量的初始化和大小判断这种简单逻辑。

    如果在循环重视使用浮点数进行检测,结果可能出现死循环。如下写法会死循环

    1. package com.zjf;
    2.  
    3. public class Test {
    4.  
    5.    public static void main(String[] args) {
    6.       for(double d = 0D; d != 1D;d+=0.1D)
    7.       {
    8.          System.out.println(d);
    9.       }
    10.     }
    11. }

    我们换一种方式看看输出:

    1. package com.zjf;
    2.  
    3. public class Test {
    4.  
    5.    public static void main(String[] args) {
    6.       for(double d = 0D; d < 1D;d+=0.1D)
    7.       {
    8.          System.out.println(d);
    9.       }
    10.     }
    11. }

    输出:

    0.0

    0.1

    0.2

    0.30000000000000004

    0.4

    0.5

    0.6

    0.7

    0.7999999999999999

    0.8999999999999999

    0.9999999999999999

    多重选择:switch语句

    switch语句只能作用在整形和枚举上。不能测试字符串,也不能测试浮点型。

    switch语句中的多个case不能重复,所以只能满足一个,不可能满足多个。但是如果你不在每个case后面加上break,就会继续走到default。如下:

    1. package com.zjf;
    2.  
    3. public class Test {
    4.  
    5.    public static void main(String[] args) {
    6.       int i = 3;
    7.       switch (i) {
    8.       case 1:
    9.          System.out.println(1);
    10.       case 2:
    11.          System.out.println(2);
    12.       case 3:
    13.          System.out.println(3);
    14.       default:
    15.          System.out.println("default");
    16.       }
    17.     }
    18. }

    结果:

    3

    default

    作者在书上说,有可能触发多个case分支,如果case语句没有加上break,那么就会接着执行下一个case分支,所以要尽量不要使用break。这段话说的没有错,是可以触发多个分支,但是语法上要求了case的键不能重复,否则就会编译报错。那么java这么设计的目的何在呢,我猜测,如果不加上break,那么每个case都会走到default,这样就可以在default中加上一些公共逻辑。

  • 相关阅读:
    ORACLE的主要进程DBWn,LGWR的工作原理
    ORACLE PGA
    如何精确获取ORACLE的秒?
    Dictionary.TryGetValue 方法 试用记 Mark
    在C#中如何实现Form与Form之间的通信
    在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: 命名管道提供程序, error: 40 无法打开到 SQL Server 的连接)
    在C#程序中实现插件架构
    兄弟,你有弄过TestDriven.NET吗?
    由C#风潮想起的-给初学编程者的忠告
    今天真是不在状态的一天,又是一个书写的错误(本文仅为提醒自己,你可以选择跳过)
  • 原文地址:https://www.cnblogs.com/xiaolang8762400/p/7041092.html
Copyright © 2020-2023  润新知