流程控制语句(上)

本文介绍了Java编程中的流程控制语句,包括顺序、分支和循环结构。详细讲解了if-else的三种形式及其使用规则,并通过示例展示其应用。此外,还探讨了switch-case语句的使用,强调了其在多分支选择中的作用,并提供了使用Scanner类获取用户输入的示例。
摘要由CSDN通过智能技术生成

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。

​    其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:

  • ​      顺序结构

​                    程序从上到下逐行地执行,中间没有任何判断和跳转。

  • ​          分支结构

​                    根据条件,选择性地执行某段代码。

​                    有if…else和switch-case两种分支语句

  • ​      循环结构

​                    根据循环条件,重复性的执行某段代码。

​                    有while、do…while、for三种循环语句。

​                    注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素。

由于顺序结构,我们从一开始就接触过,这里主要分支结构和循环结构

1.if-else结构

if-else可以细分为三种格式

(1)        if (条件表达式){

​                        执行代码块;

​                    }

 

(2)        if (条件表达式){

​                        执行代码块1;

​                    }else{

​                        执行代码块2;

​                    }

 

(3)        if (条件表达式1){

​                    执行代码块1;

​            }else if(条件表达式2){

​                    执行代码块2;

​            }

​            ……

​            else{

​                    执行代码块n;

​            }

 

1.2    if-else使用说明

  •  条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量
  • 语句块只有一条执行语句时,一对{}可以省略,但建议保留
  • if-else语句结构,根据需要可以嵌套使用
  • 当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略
  • 当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓当多个条件是“包含”关系时,“小上大下 / 子上父下“

1.3if-else语句的应用

练习1:

public class AgeTest{

	public static void main(String args[]){

		int age = 75;

		if (age< 0) {

			System.out.println("不可能!");

		} else if (age>0&&age<18) {

			System.out.println("你还需要学习!");

		}  else if (age>=18&&age<60) {

			System.out.println("你已经成年了!");

		}else {

			System.out.println("你可以退休了");

		}

	}

}

 练习2:

public class day01 {
    public static void main(String[] args) {
        int x = 4;
        int y = 1;
        if (x > 2) {
            if (y > 2)
                System.out.println(x + y);
            System.out.println("会是我吗?");
        } else
            System.out.println("x is " + x);

    }
}//结果:会是我吗?

练习3:

public class day01 {
    public static void main(String[] args) {
        boolean b = true;
//如果写成if(b=false)能编译通过吗?如果能,结果是?
        if(b == false)
            System.out.println("a");
        else if(b)
            System.out.println("b");
        else if(!b)
            System.out.println("c");
        else
            System.out.println("d");

    }
}//结果:b

2.switch-case

2.1 简介:

switch-case语句是一种多分支选择语句,它可以根据某个变量的值,从多个不同的选项中选择一个执行。

其基本语法如下:

switch (expression) {
    case value1:
        // 对应的语句块
        break;
    case value2:
        // 对应的语句块
        break;
    ...
    default:
        // 对应的语句块
}

switch语句中的expression可以是任何基本数据类型或枚举类型,case语句中的value1、value2等必须是常量或字面量,且类型必须与expression相同。当expression的值与某个case语句中的value相等时,会执行该case语句后的语句块,如果没有遇到break语句,会继续执行后续所有的语句块。如果expression的值与所有的case语句中的value都不相等,则会执行default语句块,如果没有default语句块,则不执行任何语句。

2.2switch-case演示

下面是一个简单的例子,根据用户输入的数字,输出相应的中文数字。

import java.util.Scanner;

public class SwitchCaseDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个数字(1-5):");
        int num = scanner.nextInt();
        switch (num) {
            case 1:
                System.out.println("一");
                break;
            case 2:
                System.out.println("二");
                break;
            case 3:
                System.out.println("三");
                break;
            case 4:
                System.out.println("四");
                break;
            case 5:
                System.out.println("五");
                break;
            default:
                System.out.println("输入错误!");
        }
    }
}
//当用户输入1~5之间的数字时,程序会输出相应的中文数字,如果输入其他数字,则会输出“输入错误!”。

2.3switch语句的注意事项

  • switch(表达式)中表达式的值必须是下述几种类型之一:byte,short, char,int,枚举 (jdk 5.0),String (jdk 7.0);
  • case子句中的值必须是常量,不能是变量名或不确定的表达式值;
  • 同一个switch语句,所有case子句中的常量值互不相同;
  • break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到 switch结尾
  • default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default

2.3default关键字 

  在switch-case语句中,case关键字用于表示每一个分支,而default关键字则用于表示当所有分支都不满足时,执行的默认分支。

具体来说,当switch语句中的表达式值与某个case分支的值相等时,程序会跳转到该分支执行相应的代码块,如果没有遇到break语句,则会继续执行后续的分支。当所有的分支都不满足时,程序会跳转到default分支执行其代码块。如果没有default分支,则程序不会执行任何代码。

在switch-case语句中,default分支可选,可以根据具体情况选择是否需要使用。如果没有特别的需求,建议在switch-case语句中始终包含default分支,以防止程序出现异常。在default分支中,通常会输出一条错误信息或者抛出一个异常,以提醒程序员或用户输入的值不符合要求。

下面是一个简单例子:

import java.util.Scanner;

public class SwitchCaseDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个数字(1-5):");
        int num = scanner.nextInt();
        switch (num) {
            case 1:
                System.out.println("你输入的是1");
                break;
            case 2:
                System.out.println("你输入的是2");
                break;
            case 3:
                System.out.println("你输入的是3");
                break;
            case 4:
                System.out.println("你输入的是4");
                break;
            case 5:
                System.out.println("你输入的是5");
                break;
            default:
                System.out.println("输入错误,请输入一个1-5之间的数字");
        }
    }
}
//在上面的例子中,如果用户输入的是1~5之间的数字,则会输出相应的提示信息,如果输入的是其他的数字,则会输出“输入错误,请输入一个1-5之间的数字”。

3.Scanner类(补充) 

Scanner类是一种用于读取用户输入数据的工具类,它可以获取来自键盘或文件等输入源的基本数据类型值(例如整数、浮点数、字符串等)。使用Scanner类可以极大地简化输入数据的处理流程,减少编程工作量。

3.1Scanner类使用步骤

  1. 导入Scanner类:在Java程序的开头部分,需要导入java.util.Scanner包,以便使用Scanner类。
    import java.util.Scanner;

  2. 创建Scanner对象:在程序中创建Scanner对象时,需要指定要从哪个输入源读取数据。通常情况下,我们使用System.in参数指定从标准输入(即键盘)读取数据,例如:
    Scanner scanner = new Scanner(System.in);

    1. 读取输入数据:使用Scanner类提供的方法来读取不同类型的输入数据,下面是一些Scanner类中的方法

      next()读取一个字符串,遇到空格或换行符即停止,并返回读取到的字符串。
      nextLine()读取一行字符串,直到读取到换行符为止,并返回读取到的字符串。与next()方法不同的是,该方法可以读取包括空格在内的整行内容。
      nextInt()读取一个整数值,并返回读取到的整数。
      nextDouble()读取一个浮点数值,并返回读取到的浮点数。
      hasNext()判断输入流是否还有下一个元素,如果有返回true,否则返回false
      hasNextInt()判断输入流中下一个元素是否为整数类型,如果是返回true,否则返回false。
      hasNextDouble()判断输入流中下一个元素是否为浮点类型,如果是返回true,否则返回false。

      4.调用Scanner类中的close(),关闭 Scanner对象

      scanner.close();//手动进行关闭 

调用该方法是因为Scanner类在读取文件或者网络流时,会占用对应的文件或者网络资源,如果不及时释放这些资源,会导致资源浪费和内存泄漏等问题。另外,如果Scanner对象没有关闭,则可能会导致一些重要信息未能及时销毁,从而引发安全隐患。

下面是一个Scanner类的演示

import java.util.Scanner;

public class SumCalculator {
    public static void main(String[] args) {
        int num1, num2, sum;
        Scanner input = new Scanner(System.in);
        System.out.print("请输入第一个整数:");
        num1 = input.nextInt(); // 从键盘读取一个整数
        System.out.print("请输入第二个整数:");
        num2 = input.nextInt(); // 从键盘读取另一个整数
        sum = num1 + num2; // 计算两数之和
        System.out.println("这两个整数的和是:" + sum);
        input.close();//手动进行关闭
    }
}

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值