Java基础教程(9)--流程控制

一.分支结构

1.if语句

??if语句会与其后的第一条语句或代码块结合,且只有当判断条件为true时才执行语句或代码块。例如,自行车只有在运动的时候才可以减速,就像下面这样:

void applyBrakes() {
    if (isMoving){
        currentSpeed--;
    }
}

??如果判断条件为false,也就是自行车处于静止状态时,将会跳过if语句后面的语句或代码块。

??如果if语句后只有一条需要执行的语句,既可以使用大括号,也可以不使用。不过按照惯例来说,任何时候都应该使用大括号,这样可以避免有时因为忘记大括号而带来的一些逻辑错误。for、while语句也是同理。

2.if-else语句

??if语句只是指出了当判断条件为true时需要执行的语句。使用if-else语句可以同时指定当判断条件为true和false时应该执行的语句。当自行车没有处于运动状态时,可以简单地输出一条信息:

void applyBrakes() {
    if (isMoving){
        currentSpeed--;
    } else {
        System.out.println("The bicycle has already stopped!");
    }
}

??下面的程序根据分数来给出对应的等级:

class IfElseDemo {
    public static void main(String[] args) {
        int testscore = 76;
        char grade;
        if (testscore >= 90) {
            grade = ‘A‘;
        } else if (testscore >= 80) {
            grade = ‘B‘;
        } else if (testscore >= 70) {
            grade = ‘C‘;
        } else if (testscore >= 60) {
            grade = ‘D‘;
        } else {
            grade = ‘F‘;
        }
        System.out.println("Grade = " + grade);
    }
}

??该程序最终的输出为:

Grade = C

??虽然testscore满足很多条件,例如76>=70和76>=60等,但是,一旦满足了一个条件,就会执行对应的语句(grade = ‘C‘;)并跳过剩余条件。

3.switch语句

??与if和if-else语句不同,switch语句可以有许多可能的执行路径。例如下面的代码将会使用switch语句根据month的值来输出对应的月份:

public class SwitchDemo1 {
    public static void main(String[] args) {
        int month = 8;
        String monthString;
        switch (month) {
            case 1: monthString = "January";break;
            case 2: monthString = "February";break;
            case 3: monthString = "March";break;
            case 4: monthString = "April";break;
            case 5: monthString = "May";break;
            case 6: monthString = "June";break;
            case 7: monthString = "July";break;
            case 8: monthString = "August";break;
            case 9: monthString = "September";break;
            case 10: monthString = "October";break;
            case 11: monthString = "November";break;
            case 12: monthString = "December";break;
            default: monthString = "Invalid month";break;
        }
        System.out.println(monthString);
    }
}

??该程序将会输出:

August

??switch语句的判断条件是一个变量或表达式,它的类型可以是byte,short,char和int以及它们的包装类(Character,Byte,Short,和Integer),还可以是字符串和枚举类型,case后面是这些类型的字面量。

??default语句用来处理当所有case标签都不满足的情况。break语句用来退出switch块。如果一个case语句最后没有使用break,将会执行下一个case的语句而不进行判断,直到遇到break或switch块结束。下面的例子根据month的值来输出季节:

public class SwitchDemo2 {
    public static void main(String[] args) {
        int month = 5;
        switch(month) {
            case 2:
            case 3:
            case 4: System.out.println("Spring");
            case 5:
            case 6:
            case 7: System.out.println("Summer");
            case 8:
            case 9:
            case 10: System.out.println("Autumn");
            case 11:
            case 12:
            case 1: System.out.println("Winter");
        }
    }
}

??该程序将会输出:

Summer

??其实无论month的值是5,6还是7,都会输出Summer,因为case 5和case 6都没有break语句,即使匹配到了它们,程序也还是会进入case 7。

二.循环结构

1.while语句和do-while语句

??当判断条件为true时,while语句将会重复执行代码块中的内容,直到判断条件为false。它的语法如下:

while (expression) {
     statement(s)
}

??下面的程序使用while循环打印出1~10:

class WhileDemo {
    public static void main(String[] args){
        int count = 1;
        while (count < 11) {
            System.out.println("Count is: " + count);
            count++;
        }
    }
}

??可以使用以下while语句实现无限循环:

while (true){
    // your code goes here
}

??Java也支持do-while循环,语法如下:

do {
    statement(s)
} while (expression);

??do-while循环和while循环之间的区别在于它在执行完代码块中的语句之后进行判断,而不是在循环开始前进行判断。也就是说,循环体中的代码至少会执行一次。下面的程序使用do-while循环打印出1~10:

class DoWhileDemo {
    public static void main(String[] args){
        int count = 1;
        do {
            System.out.println("Count is: " + count);
            count++;
        } while (count < 11);
    }
}

2.for循环

??for循环可以控制循环的次数,它的的语法如下:

for (initialization; condition; increment) {
    statement(s)
}

??使用for循环时,需要注意:

  • initialization通常用来更初始化计数器,它只在循环开始前执行一次。
  • condition时每一次循环前要判断的条件,一旦条件不满足,循环将结束。
  • increment用来对计数器进行更新,它在每次循环结束后执行。

??下面的程序使用for循环打印出1~10:

class ForDemo {
    public static void main(String[] args){
         for(int i=1; i<11; i++){
              System.out.println("Count is: " + i);
         }
    }
}

??注意变量i的声明位置。由于它是在初始化表达式中声明的,因此它的范围和生存周期仅在循环内有效。一旦循环结束,变量i将无法访问。

??for循环的三个表达式都是可选的,任意一个都可以为空。下面的语句将会创建一个无限循环:

for ( ; ; ) {
    // your code goes here
}

??for循环还有一种用于迭代数组和集合的格式,称为增强型for循环。下面的程序使用增强型for循环来遍历数组:

class EnhancedForDemo {
    public static void main(String [] args){
         int [] numbers =
             {1,2,3,4,5,6,7,8,9,10};
         for(int item:numbers){
             System.out.println(“Count is:”+ item);
         }
    }
}

三.中断控制流

1.break

??break语句用于结束当前控制结构,它有两种形式,带标签的break语句和不带标签的break语句。在之前的switch样例中已经见到了不带标签的break语句。还可以使用不带标签的break语句终止for,while或do-while循环,如下面的BreakDemo程序:

class BreakDemo {
    public static void main(String[] args) {
        int[] arrayOfInts = { 32, 87, 3, 589, 12, 1076, 2000, 8, 622, 127 };
        int searchfor = 12;
        int i;
        boolean foundIt = false;
        for (i = 0; i < arrayOfInts.length; i++) {
            if (arrayOfInts[i] == searchfor) {
                foundIt = true;
                break;
            }
        }
        if (foundIt) {
            System.out.println("Found " + searchfor + " at index " + i);
        } else {
            System.out.println(searchfor + " not in the array");
        }
    }
}

??该程序的输出是:

Found 12 at index 4

??不带标签的break语句跳出最内层的循环或分支结构,但带标签的break语句可以跳出标签对应的那个结构。例如:

class BreakWithLabelDemo {
    public static void main(String[] args) {
        int[][] arrayOfInts = { { 32, 87, 3, 589 },
                                { 12, 1076, 2000, 8 },
                                { 622, 127, 77, 955 } };
        int searchfor = 12;
        int i;
        int j = 0;
        boolean foundIt = false;
        search:
            for (i = 0; i < arrayOfInts.length; i++) {
                for (j = 0; j < arrayOfInts[i].length;
                    j++) {
                    if (arrayOfInts[i][j] == searchfor) {
                        foundIt = true;
                        break search;
                    }
                }
            }
        if (foundIt) {
            System.out.println("Found " + searchfor + " at " + i + ", " + j);
        } else {
            System.out.println(searchfor + " not in the array");
        }
    }
}

??当找到12时,程序将跳出search对应的for循环。该程序的输出是:

Found 12 at 1, 0

2.continue

??continue跳到循环体的末尾,并执行循环条件的判断。下面的程序统计字母p的出现次数。如果当前字符不是p,则continue语句将跳过循环的其余部分并继续执行下一次循环。如果是 “p”,计数器会加1:

class ContinueDemo {
    public static void main(String[] args) {
        String searchMe = "peter piper picked a peck of pickled peppers";
        int max = searchMe.length();
        int numPs = 0;
        for (int i = 0; i < max; i++) {
            if (searchMe.charAt(i) != ‘p‘)
                continue;
            numPs++;
        }
        System.out.println("Found " + numPs + " p in the string.");
    }
}

??该程序的输出是:

Found 9 p in the string.

??和break一样,continue也分为带标签的continue语句和不带标签的continue语句。带标签的continue语句将会结束当前的循环并开始下一次标签对应的循环。下面的程序使用带标签的continue和break语句来判断一个字符串是否包含另一个字符串:

class ContinueWithLabelDemo {
    public static void main(String[] args) {
        String searchMe = "Look for a substring in me";
        String substring = "sub";
        boolean foundIt = false;
        int max = searchMe.length() - substring.length();
        test:
            for (int i = 0; i <= max; i++) {
                int n = substring.length();
                int j = i;
                int k = 0;
                while (n-- != 0) {
                    if (searchMe.charAt(j++) != substring.charAt(k++)) {
                        continue test;
                    }
                }
                foundIt = true;
                    break test;
            }
        System.out.println(foundIt ? "Found it" : "Didn‘t find it");
    }
}

??该程序的输出是:

Found it

3.return

??最后一个可以中断控制流的语句是return语句,它可以从当前的方法中退出。return语句有两种形式,使用返回值和不使用返回值。如果要返回一个值,只需要将值或表达式放在return关键字后面。例如:

return ++count;

??返回值的数据类型必须与方法声明的返回值的类型匹配。使用没有返回值的return语句时,方法的返回值类型必须声明为void,例如:

return;

原文地址:https://www.cnblogs.com/maconn/p/9795134.html

时间: 2024-11-04 17:10:18

Java基础教程(9)--流程控制的相关文章

黑马程序员——Java基础语法(二)---流程控制

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 本文主要介绍java基础语法中的流程控制,流程控制是我们写出灵活代码的基础.常见的流程控制主要有四类:判断结构.选择结构.循环结构.其他控制结构 一.判断结构 判断结构的标志是if语句,if语句主要有三种表现形式: 1.if(条件表达式) { 执行语句 } 注意: 1.如果if语句中只有一条语句,那么可以不写大括号.不过初学者一定要写括号,以免出错. 2.如果if语句没写大括号,if就只能控制

Java基础第四天总结——Java基础语法——程序流程控制

目录: 一.程序流程控制 二.顺序结构 三.分支语句1:if-else结构 四.分支语句2:switch-case结构 五.循环结构 六.循环结构1:for循环 /*--------------------------黄金分割线----------------------------------*/ 一.程序流程控制 > 顺序结构 ● 自上逐行向下执行 >分支结构 ● 根据条件,选择性执行某段代码 ● 有if-else和switch-case两种分支语句 >循环结构 ● 根据循环条件,重

JAVA基础之五:流程控制

原文地址:http://happyshome.cn/blog/java/basics/flow.html 本文主要介绍了Java中常用的流程控制结构,循环.嵌套循环.条件判断等. 以及在使用过程中应该注意的问题. 1.  前言 有三种流控制的结构:顺序.条件和循环,如下图所示: 2. 顺序流控制 程序是一个指令序列.顺序流在程序中使用的是最直接.最常用的,程序语句的执行依赖于写入的顺序. 3.  条件流控制 条件流控制的几种类型:if-then,if-then-else,if-elseif-el

Java入门教程三(流程控制)

概述 程序有 3 种结构:顺序结构.选择结构和循环结构.分别为:if elseswitch case,while与do while,for, foreach,return,break ,continue if else if 选择结构是根据条件判断之后再做处理的一种语法结构.默认情况下,if 语句控制着下方紧跟的一条语句的执行.不过,通过语句块,if 语句可以控制多个语句. public static void main(String[] args) { int a=1,b=2; if(a>b)

阿花宝宝 Java基础笔记 之 流程控制(一)

1.语法:if(条件1){           //代码1        }else if(条件2){           //代码块2          }else{           //代码块3        }        else if:可以没有,可以多个        else:可以没有,最多一个,并且只能放在最后  先判断条件1,当结果为true时,执行大括号内的代码块1,跳出结构!  结果为false时,再判断条件2,当结果为true时,执行大括号内的代码块2,当跳出结构! 

阿花宝宝 Java基础笔记 之 流程控制(二)

1. 各循环可互相嵌套    一般不超过三层    外层循环变量变化一次,内层循环变量要变化一遍   注意点:循环次数.(内层循环次数*外层循环次数)2.break语句的使用  break语句用于终止某个循环,使程序跳到循环块外的下一条语句.  在循环中位于break后的语句将不再执行,循环也停止执行.  break语句不仅可以用在for循环中,也可以用在while和do-while循环中.  break语句通常与if条件语句一起使用. 3. continue语句的使用  continue可以用

Java基础教程:JDBC编程

Java基础教程:JDBC编程 快速开始 什么是JDBC JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库. JDBC API 库包含下面提到的每个任务,都是与数据库相关的常用用法. 制作到数据库的连接. 创建 SQL 或 MySQL 语句. 执行 SQL 或 MySQL 查询数据库. 查看和修改所产生的记录. 从根本上来说,JDBC 是一种规范,它提供了一套完整的接口,允许便携式访问到底层数据库,因此可以用 J

Unit04: JavaScript 概述 、 JavaScript 基础语法 、 流程控制

Unit04: JavaScript 概述 . JavaScript 基础语法 . 流程控制 my.js function f3() { alert("唐胜伟"); } demo1.html  演示点击按钮,弹出提示框 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <

Java基础教程:面向对象编程

Java基础教程:面向对象编程 Java语言概述 Java语言特点 1.Java为纯面向对象的语言,它能够直接反映现实生活中的对象.总之,Everything is object! 2.平台无关性.Java为解释型语言,编译器会把Java代码变成"""中间代码",然后在JVM上解释执行. 3.Java提供了很多内置的类库,这些类库简化了开发人员的程序设计工作,同时缩短了项目开发时间. 4.Java语言提供了对Web应用的支持. 5.Java语言提供了较好的安全性和健