第三章 流程控制

本文详细介绍了Java中的Scanner类用于实现人机交互,获取用户输入的方法,以及if选择结构(单分支、双分支、多重if和嵌套if)、switch选择结构和循环结构(while、do-while、for和foreach)的使用示例。
摘要由CSDN通过智能技术生成

第一节:交互Scanner

1. 概念

  • Scanner :实现人机交互。用于获取用户输入的信息。位于java.util.Scanner包。

  • 语法:

Scanner i = new Scanner(System.in);
  • 通过Scanner类的next()与nextLine()方法获取输入的字符串,读取通过hasNext()与hasNextLine()判断是否还有输入的数据。

  • next()

    • 一定要读取到有效字符串后才可以结束输入

    • 对输入有效字符之前遇到的空白,next()方法会自动将其去掉

    • 只对输入有效字符后才将其输入的空白作为分隔符或结束符

    • next()方法不能得到带有空格的字符串

  • nextLine()

    • 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符

    • 可以获取空白信息

2. 示例

//创建一个扫描器对象,用于从键盘获取用户输入的数据
Scanner i = new Scanner(System.in);
System.out.println("使用nextLine()接收:");
//使用nextLine()方式接收
String str1 = i.nextLine();
System.out.println("输出的内容为:" + str1);

System.out.println("使用next()接收:");
//使用next()方式接收
String str2 = i.next();
System.out.println("输出的内容为:" + str2);
//关闭资源I/O
i.close();
//输入多个数,求和与平均数
//从键盘接收数据
Scanner i = new Scanner(System.in);
//和
double sum = 0;
//记录次数
int count = 0; 
//循环输入
while(i.hasNextDouble()){
double a = i.nextDouble();
count++;
sum+=a;
System.out.println("您输入了第"+count+"次数据,和为"+sum);
}
System.out.println("和为:"+sum);
System.out.println("平均数为:"+(sum/count));

第二节:选择结构

1. if选择结构

1.1. if单分支
  • 判断一个事物是否可行,然后去执行,这样的一个过程通常使用if语句进行判断

  • 语法:

    if(布尔表达式){
    //如果布尔表达式为true,执行该代码块
    }
  • 流程图:

     

  • 示例:

Scanner i = new Scanner(System.in);
System.out.println("请输入内容:");
String str = i.nextLine();
//equals:判断字符串是否相等
if(str.equals("hello")){
System.out.println("输入的内容为:"+str);
}
i.close();
1.2. if双分支
  • 语法:

    if(布尔表达式){
    //如果布尔表达式为true,执行该代码块
    }else{
    //如果布尔表达式为true,执行该代码块
    }
  • 流程图:

           

  • 示例:

    //成绩大于60则及格,小于60则不及格
    Scanner i = new Scanner(System.in);
    System.out.println("请输入一个成绩:");
    double score = i.nextDouble();
    if(score >= 60){
    System.out.println("及格");
    }else{
    System.out.println("不及格");
    }
    i.close();
    1.3. 多重if
  • 语法:

    if(布尔表达式 1){
    //如果布尔表达式1的值为true执行代码
    }else if(布尔表达式 2){
    //如果布尔表达式2的值为true执行代码
    }else if(布尔表达式 3){
    //如果布尔表达式3的值为true执行代码
    }else {
    //如果以上布尔表达式都不为true执行代码
    }   
  • 流程图:

  • 示例:

     //成绩100则满分,大于90则A级;大于80则B级;大于70则C级;大于60则D级;小于60不及格,否则成绩不合法
    Scanner i = new Scanner(System.in);
    System.out.println("请输入一个成绩:");
    double score = i.nextDouble();
    if (score == 100) {
    System.out.println("恭喜满分!");
    } else if (score < 100 && score >= 90) {
    System.out.println("恭喜A级!");
    } else if (score < 90 && score >= 80) {
    System.out.println("恭喜B级!");
    } else if (score < 80 && score >= 70) {
    System.out.println("恭喜C级!");
    } else if (score < 70 && score >= 60) {
    System.out.println("恭喜D级!");
    } else if (score < 60 && score >= 0) {
    System.out.println("不及格!");
    } else {
    System.out.println("成绩不合法!");
    }
    i.close();
    1.4. 嵌套if
  • 语法:

    if(布尔表达式 1){
    //如果布尔表达式1的值为true执行代码
     if(布尔表达式 2){
     //如果布尔表达式2的值为true执行代码
     }esle{
        //如果布尔表达式的值为false执行代码
     }
    }else{
       //如果以上布尔表达式都不为true执行代码
    }
  • 流程图:

  • 示例:

    int x = 66;
        if( x > 22 ){
            System.out.println("x>22");
            if(x > 44){
                System.out.println("x>44");
            }else{
               System.out.println("x<44");
            }
        }else{
           System.out.println("x<22");
    }

    2. switch选择结构

    2.1. 概念
  • switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支

  • switch语句中的变量类型可以是:

    • byte/short/int/char

    • Java SE7开始switch支持String类型

  • 注意:使用case标签时,字符串必须是常量

2.2. 语法
switch(expression){
  case value :
   //语句
    break; 
  case value :
   //语句
    break; 
   //case...
   default : 
     break; 
   //语句
}
2.3. 示例
char grade = 'C';
//switch匹配一个具体的值
//若case代码块后不加brake,会有case穿透现象
switch (grade) {
   case 'A':
        System.out.println("优秀");
        break;
   case 'B':
   case 'C':
        System.out.println("良好");
        break;
   case 'D':
        System.out.println("及格");
        break;
   case 'E':
        System.out.println("挂科");
        break;
   default:
        System.out.println("未知等级!");
 }

第三节:循环结构

1. while

  • 当条件成立时(布尔表达式为true),重复的做某一件事情

  • 大多数情况下会让表达式失效,来结束循环(避免程序进入死循环,导致程序崩溃,卡顿)

  • 少部分需要循环一直执行,如服务器请求、响应、监听等

  • 特点:先判断,再执行

  • 语法:

    while(循环条件){
       //循环操作
    }
  • 示例:

    //计算1--100的值
    int sum = 0;
    int num = 0;
    while(num <= 100){
          sum +=num;
          num++;
     }
    System.out.println("1~100的值"+sum); //输出 5050

    2. do-while

  • 当不满足循环条件时,也会执行一次

  • 特点:先执行,再判断

  • 语法:

    do{
    //循环操作
    }while(循环条件);
  • 示例:

     //计算1--100的值
    int sum = 0;
    int num = 0;
      do{
          sum +=num;
          num++;
     }while(num <= 100);
    System.out.println("1~100的值"+sum); //输出 5050

    3. for循环

  • 作用:反复执行一段代码,直到满足一定的条件为止

  • for循环语句支持迭代的一种通用结构,是最有效、最灵活的循环结构

  • 循环结构由四个部分组成:

    • 初始部分:设置循环的初始状态

    • 循环体:重复执行的代码

    • 迭代部分:下一次循环开始前要执行的部分

    • 循环条件:判断是否继续执行的条件

  • 语法:

    for(初始部分;条件判断;迭代部分){
       //循环体
    } 
  • 执行顺序:

1.先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。

2.进行循环条件判断

2.根据循环条件判断结果。如果为true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。

3.执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)。

4.再次进行循环条件判断。循环执行上面的过程。

  • 示例:

    //循环输出0-1000中能被5整除的数,并每行显示3个数
    for (int i = 0; i <= 1000; i++) {
        if(i%5==0){
            System.out.print(i+"\t");
         }
         if(i%(5*3)==0){
            System.out.println();
         }
      }
    //嵌套for循环
    //打印九九乘法表
       for (int i = 1; i <= 9; i++) {
           for (int j = 1; j <= i; j++) {
                System.out.print(j+"*"+i+"="+(i*j) + "\t");
         }
          System.out.println();
      }

    4. foreach

  • 由Java JDK5引入了一种主要用于数组集合的增强型for循环

  • 语法:

    for(元素类型type  元素变量value  : 遍历对象obj){   
       //引用value变量的java语句,遍历出数据
    }
  • 示例:

     //定义一个数组
    int[] array = {10,20,30,40,50,60};
    //循环遍历数据
    for (int x:array) {
        System.out.println(x); //输出 10,20,30,40,50,60
     }

    5.break/continue

  • break:在任何循环语句的主体部分,均可以使用break控制循环流程。break用于强行退出循环(终止循环),不执行循环中的其余语句。

  • 示例:
    int i = 0;
    while(i<100){
    i++;
    System.out.println(i);
    if(i >= 30){
       break;
      }
    }
  • continue:用在循环语句体中,用于终止某次循环过程(退出本次循环,进入下次循环),即跳过循环中尚未执行的语句,接着进行下一次是否执行循环的判定

  • 示例:
    int i = 0;
    while(i < 100){
    i++;
    if(i % 10 == 0){
        System.out.println();
     	 continue;
      }
      System.out.print(i+" ");
    }
  • 示例:打印三角形
     //打印三角形 5行
    for (int i = 1; i <= 5; i++) {
        for (int j = 5; j >=i; j--) {
            System.out.print(" ");
        }
        for (int j = 1; j <= i; j++) {
            System.out.print("*");
        }
        for (int j = 1; j < i; j++) {
            System.out.print("*");
        }
        System.out.println();
     }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值