Java程序设计(基础)- 流程控制

Java程序设计(基础)- 流程控制

在这里插入图片描述

复合语句

       Java语言的复合语句是以整个块区为单位的语句,又称块语句。复合语句由“{”开始,“}”结束。
       对于复合语句,我们只需要知道,复合语句为局部变量创建了一个作用域,该作用域为程序的一部分,在该作用域中某个变量被创建并能够被使用,如果在某个变量的作用域外使用该变量,则会发生错误。并且复合语句中可以嵌套复合语句。

顺序结构

       JAVA的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行顺序结构是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。顺序结构在程序流程图中的体现就是用流程线将程序框自上而地连接起来,按顺序执行算法步骤。

分支结构

  1. if条件语句
      使用if条件语句,可选择是否要执行紧跟在条件之后的那个语句。关键字if之后是作为条件的“布尔表达式”,如果该表达式返回true,则执行其后的语句;若为false,则不执行if后的语句。可分为简单的if条件语句、if···else语句和if···else if多分支语句。
    int a = 100;
    if(a == 100) {
   
        System.out.println(a);
    }

如上方代码,{}之间为复合语句,if为条件语句,翻译过来就是如果a等于100,则输出a的值,否则不执行。
  如果if后只有一条语句,比如上述代码只有一条输出,可以不加{},但为了代码的可读性,以及防止代码过多出现不必要的错误,建议所有的if、else后都加上相应的{}。
  2. if···else语句

public class Getifelse {
   

    public static void main(String[] args) {
   
        int math = 80;        // 声明,数学成绩为80(及格)
        int english = 50;    // 声明,英语成绩为50(不及格)
        
        if(math >= 60) {
       // if判断语句判断math是否大于等于60
            System.out.println("math has passed");
        } else {
               // if条件不成立
            System.out.println("math has not passed");
        }
        
        if(english >= 60) {
       // if判断语句判断english是否大于等于60
            System.out.println("english has passed");
        } else {
               // if条件不成立
            System.out.println("english has not passed");
        }
    }

}
  1. if···else if多分支语句

       if···else if多分支语句用于针对某一事件的多种情况进行处理。通常表现为“如果满足某种条件”,就进行某种处理,否则,如果满足另一种条件,则进行另一种处理。

public class GetTerm {
   

   public static void main(String[] args) {
   
       int x = 40;
       
       if(x > 60) {
   
           System.out.println("x的值大于60");
       } else if (x > 30) {
   
           System.out.println("x的值大于30但小于60");
       } else if (x > 0) {
   
           System.out.println("x的值大于0但小于30");
       } else {
   
           System.out.println("x的值小于等于0");
       }
   }

}
  1. switch多分支语句
    switch语句是一种比较简单明了的多选一的选择,在Java语言中,可以用switch语句将动作组织起来进行多选一。语法格式如下:
switch(表达式)
{
    
case 常量值1:
       语句块1
       [break;]
...
case 常量值n:
       语句块2
       [break;]
default:
       语句块 n+1;
       [break;]
}

switch语句中表达式的值必须是整型或字符型,常量值1~n必须也是整型或字符型。

简单说一下switch语句是怎么执行的(重点,初学的朋友要注意)。首先switch语句先计算表达式的值,如果表达式的值与case后的常量值相同,则执行该case后的若干个语句,直到遇到break语句为止。如果没有break,则继续执行下一case中的若干语句,直到遇到break为止。若没有一个常量的值与表达式的值相同,则执行default后面的语句。default语句可选,如果不存在default语句,而且switch语句中的表达式的值与任何case的常量值都不相同,则switch不做任何处理。并且,同一个switch语句,case的常量值必须互不相同。

例:用switch语句打印出星期的英文单词

import java.util.Scanner;

public class GetSwitch {
   

    public static void main(String[] args) {
   
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入今天星期几:");
        int week = scan.nextInt();
        
        switch (week) {
   
        case 1:
            System.out.println("Monday");
            break;
        case 2:
            System.out.println("Tuesday");
            break;
        case 3:
            System.out.println("Wednesday");
            break;
        case 4:
            System.out.println("Thursday");
            break;
        case 5:
            System.out.println("Friday");
            break;
        case 6:
            System.out.println("Saturday");
            break;
        case 7:
            System.out.println("Sunday");
            break;
        default:
            System.out.println("Sorry,I don't konw");
            break;
        }
    }

}

这里Scanner是一个扫描器,用来输入的,使用时需在package下面用import语句导入Scanner类,我们可以在控制台中输入一个数字,然后用nextInt()来接收,这样week的值就是我们输入的数字,接下来执行switch语句,有7个case分别对应周一到周末,default在输入1~7以外的数据时执行。假设在控制台中输入1,则控制台会执行case 1后的语句,输出了Monday。
要注意的是case后的常量表达式的值可以为整数和字符,但不可以是实数后字符串,比如case 1.1,case “ok”都是非法的。

循环结构

循环语句就是在满足一定条件的情况下反复执行某一个操作。包括while循环语句、do···while循环语句和for循环语句。
 1. while循环语句
  while循环语句的循环方式为利用一个条件来控制是否要继续反复执行这个语句。

public class GetSum {
   

    public static void main(String[] args) {
   
        int x = 1;            // 定义初值
        int sum = 0;        // 定义求和变量,用于存储相加后的结果
        
        while(x <= 10) {
   
            sum += x;        // 循环相加,也即 sum = sum + x;
            x++;
        }
        System.out.println(sum);
    }

}
  1. do···while循环语句

do···while循环语句与while循环语句的区别是,while循环语句先判断条件是否成立再执行循环体,而do···while循环语句则先执行一次循环后,再判断条件是否成立。也即do···while至少执行一次。语法格式如下:

do
{
   
    执行语句
}  while (条件表达式);

下面对while循环语句与do···while循环语句进行一个对比:

public class Cycle {
   

    public static void main(String[] args) {
   
        int a = 10;
        int b = 10;
        
        // while循环语句
        while(a == 8) {
   
            System.out.println("a == " + a);
            a--;
        }
        
        // do···while循环语句
        do {
   
            System.out.println("b == " + b);
            b--;
        } while(b == 8);
    }

}

运行结果为:

这里,a、b都为10,先看while循环语句,进入while下语句块的条件是a == 8,很明显不成立,所以不执行,结果中没有关于a的结果,然后再看do···while循环语句,先执行一次do后的语句块,输出“b == 10”,然后判断while条件b == 8不成立,循环结束,所以结果只有一个do···while语句中执行的第一步b == 10。
   3. for循环语句

for循环语句是Java程序设计中最有用的循环语句之一。一个for循环可以用来重复执行某条语句,知道某个条件得到满足。语法格式如下:

for(表达式1; 表达式2; 表达式3)
{
   
    语句序列
}

其中,表达式1为初始化表达式,负责完成变量的初始化;表达式2为循环条件表达式,指定循环条件;表达式3为循环后操作表达式,负责修整变量,改变循环条件。三个表达式间用分号隔开

例:用for循环语句求100以内所有偶数的和。

public class Circulate {
   

    public static void main(String[] args) {
   
        int sum = 0;
        
        for(int i=2; i<=100; i+=2) {
   
            sum += i;
        }
        
        System.out.println(sum);
    }

}

for循环内,首先定义一个变量并赋初值,表示循环中i从2开始进行,然后条件为i<=100,即i<=100时进行循环并执行语句块中的语句,第三个表达式“i+=2”表示每次循环执行i=i+1,即没循环一次,i的值为在原来的基础上加2后的值。然后循环求sum的值,即2+4+6+8+···+100,当i=102时退出循环,执行输出语句,输出结果为2550。

说到for循环语句就不得提到foreach语句了,它是Java5后新增的for语句的特殊简化版本,并不能完全替代for语句,但所有foreach语句都可以改写为for语句。foreach语句在遍历数组等时为程序员提供了很大的方便。语法格式如下:

for(元素变量x : 遍历对象obj) {
   
    引用了x的Java语句;
}

下面举一个例子说明foreach怎么遍历的:

int array[] = {
   7, 8, 9};
for (int arr : array) {
   
     System.out.println(arr);
}

4、跳转语句

  • a. break语句
      break语句刚刚在switch中已经见过了,是用来中止case的。实际上break语句在for、while、do···while循环语句中,用于强行退出当前循环,为什么说是当前循环呢,因为break只能跳出离它最近的那个循环的循环体,假设有两个循环嵌套使用,break用在内层循环下,则break只能跳出内层循环,如下:
for(int i=0; i<n; i++) {
       // 外层循环
    for(int j=0; j<n ;j++) {
       // 内层循环
        break;
    }
}

带标签的break

public class run {
   
    public static void main(String[] args) {
   
    outer:
        for(int i=0;i<5;i++){
   
            for(int j=0;j<5;j++){
   
                if(j==3){
   
                    break outer;
                }
                System.out.println(i+","+j+" ");
            }
            System.out.println();
        }
    System.out.println("结束");
    }
}
  • b. continue语句

continue语句只能用于for、while、do···while循环语句中,用于让程序直接跳过其后面的语句,进行下一次循环。

例:输出10以内的所有奇数

public class ContinueDemo {
   

    public static void main(String[] args) {
   
        int i = 0;
        
        while(i < 10) {
   
            i++;
            
            if(i%2 == 0) {
       // 能被2整除,是偶数
                continue;    // 跳过当前循环
            }
            
            System.out.print(i + " ");    
        }
    }

}

这里if条件判断是否为偶数,如果是偶数则执行continue,直接跳出本次循环,不进行continue后的步骤(即不执行输出语句),然后下一次循环为奇数,输出i;

  • c. return语句

return语句可以从一个方法返回,并把控制权交给调用它的语句。

public void getName() {
   
    return name;
}

例如上方代码,这是一个方法用于获取姓名,当调用这个方法时将返回姓名值。

Java设计基础及面向对象导向

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106703.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • JS中Class类的详解

    JS中Class类的详解概述    在ES6中,class(类)作为对象的模板被引入,可以通过class关键字定义类。它可以被看作一个语法糖,让对象原型的写法更加清晰、更像面向对象编程的语法。    类实际上是个“特殊的函数”,就像你能够定义的函数表达式和函数声明一样,类语法有两个组成部分:类表达式和类声明。严格模式    类和模块的内部,默认就是严格模式,所以不需要使用usestrict指定运行模式…

  • IntelliJ idea 主题包下载以及安装

    IntelliJ idea 主题包下载以及安装IntelliJidea默认的主体只有简单的白和灰,不一定能满足所有人的喜好,所以想要下载一些其它不错的主题包;主题下载地址;部分截图;选择自己喜欢的主题下载,个人还是比较喜欢SublimeText2主题,下载好之后,随意放个找得到的位置(还是放在安装目录下面吧,是个整体嘛),是个jar包。安装:file–&gt;importsetttings–…

  • 2020-java中级面试题

    2020-java中级面试题No. JD技术分类 问题 参考答案 判断标准 反馈 1 基础知识 HashMap和TreeMap区别 HashMap:①数组加链表方式存储key/value,②线程非安全,③允许null作为key和value,④key不可以重复,value允许重复,⑤不保证元素迭代顺序是按照插入时的顺序; TreeMap:①基于红黑树,②线程非安全,③不允许null作为key,④key不可以重复,value允许重复,⑤存入TreeMap的元素应当实现Compa..

    2022年10月12日
  • softmax回归算法实验内容_最小二乘法回归模型

    softmax回归算法实验内容_最小二乘法回归模型简介在本节中,我们介绍Softmax回归模型,该模型是logistic回归模型在多分类问题上的推广,在多分类问题中,类标签  可以取两个以上的值。Softmax回归模型对于诸如MNIST手写数字分类等问题是很有用的,该问题的目的是辨识10个不同的单个数字。Softmax回归是有监督的,不过后面也会介绍它与深度学习/无监督学习方法的结合。(译者注:MNIST是一个手写数字识别库,由NYU的Y…

  • 低压无功补偿电容柜浅谈

    低压无功补偿电容柜浅谈1.3、工作原理合上刀熔开关和断路器,无功功率补偿控制器根据进线柜电压和电流的相位差输出控制信号,控制交流接触器闭合和断开,从而控制电容器投入和退出。  2、电容器补偿柜的及其作用 2.1、电容器柜功能及其结构                外部结构             内部结构              2.2、电容器补偿柜的作用    电容补偿

  • Android获取屏幕分辨率及DisplayMetrics简介[通俗易懂]

    Android 可设置为随着窗口大小调整缩放比例,但即便如此,手机程序设计人员还是必须知道手机屏幕的边界,以避免缩放造成的布局变形问题。手机的分辨率信息是手机的一项重要信息,很好的是,Android 已经提供DisplayMetircs 类可以很方便的获取分辨率。下面简要介绍 DisplayMetics 类:Andorid.util 包下的DisplayMetrics 类

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号