06.Java流程控制

Java流程控制

1、用户交互Scanner

Scanner 对象是Java给我们提供的一个实现程序和人交互的工具类,可以获取用户的输入。java.util.Scanner 是Java5 的新特征。

  • 基础语法

    • Scanner s = new Scanner(System.in);

    通过Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取之前一般需要使用hasNext() 与 hasNextLine()判断是否还有输入的数据。

    注:使用IO流的类如果不关闭会一直占用资源。要养成用完就关的好习惯。

    • next()

      //·一定要读取到有效字符后才可以结束输入
      //·对输入有效字符之前遇到的空白,next()方法会自动将其去掉
      //·只有输入有效字符后才将输入的空白作为分隔符或者结束符
      //·next()不能得到导演空格的字符串
      
      package com.chao.scanner;
      import java.util.Scanner;
      
      public class Dome01 {
          public static void main(String[] args) {
              //创建一个扫描器对象,用于接收键盘数据
              Scanner scanner = new Scanner(System.in);
              System.out.println("使用next()方式接收:");
              
              //判断用户有无输入
              if(scanner.hasNext()){
                  String str = scanner.next();//等待用户输入
                  System.out.println("输入的内容为:"+str);
              }
              //关闭scanner
              scanner.close();
          }
      }
      
      
    • nextLine()

      //·以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
      //·可以获得空白
      
      package com.chao.scanner;
      import java.util.Scanner;
      
      public class Dome02 {
          public static void main(String[] args){
              //创建一个扫描器对象,用于接收键盘数据
              Scanner scanner = new Scanner(System.in);
              System.out.println("使用nextLine()接收:");
              
              //判断用户有无输入
              if(scanner.hasNextLine()){
                  String str = scanner.nextLine();//等待用户输入
                  System.out.println("用户输入的内容为:"+str);
              }
              
              //关闭scanner
              scanner.close();
          }
      }
      

2、顺序结构

Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行;

顺序结构是最简单的算法结构;

他是任何一个算法都离不开的一种算法结构

3、选择结构

  • if单选择结构

    if (布尔表达式){
        //如果布尔表达式为true则执行代码
    }
    
  • if双选择结构

    if (布尔表达式 1){
        //如果布尔表达式为true则执行代码
    }else{
        //如果布尔表达式为false则执行代码
    }
    
  • if多选择结构

    if (布尔表达式 1){
        //如果布尔表达式1为真则执行代码
    }else if (布尔表达式 2){
        //如果布尔表达式2为true则执行代码
    }else if (布尔表达式 3){
        //如果布尔表达式3为true则执行代码
    }else {
        //以上布尔表达式都不为ture则执行代码
    }
    
    //for example
    package com.chao.struct;
    
    import java.util.Scanner;
    
    public class IfDome03 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("请输入成绩:");
            int score = scanner.nextInt();
    
            if (score == 100){
                System.out.println("恭喜满分");
            }else if (score >= 60 && score < 100){
                System.out.println("恭喜及格");
            }else if (score >= 0 && score < 60){
                System.out.println("不及格");
            }else{
                System.out.println("成绩不合法");
            }
            scanner.close();
        }
    }
    
  • 嵌套的if结构

    if (布尔表达式 1){
        ///如果布尔表达式 1的值为true执行代码
        if (布尔表达式 2){
            ///如果布尔表达式 2的值为true执行代码
        }
    }
    
  • switch多选择结构

    //switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支
    //switch 语句中变量类型可以是byte、short、int、char。从Java SE 7 开始支持String类型
    //case标签必须为字符串常量或者字面量
    swith (expressin){
        case value1 :
        	//语句
        	break;//可选
        case value2 :
        	//语句
        	break;//可选
        //可以有任意多个case语句
        default ://可选
        	//语句
    }
    
    //for example
    package com.chao.struct;
    
    public class SwitchDemo02 {
        public static void main(String[] args) {
            //JDK 7 的新特性,switch支持String类型
            //字符的本质还是数字
            //反编译 java --- class(字节码文件)----反编译(IDEA)
    
            String name = "狂神";
    
            switch (name){
                case "秦疆":
                    System.out.println("秦疆");
                    break;
                case "狂神":
                    System.out.println("狂神");
                    break;
                default:
                    System.out.println("其他");
            }
        }
    }
    

4、循环结构

  • while 循环

    //先判断再执行,不满足则不执行
    while(布尔表达式){
        //循环内容
    }
    
    //for example
    package com.chao.struct;
    
    public class WhileDemo02 {
        public static void main(String[] args) {
            int i = 0;
            int sum = 0;
    		//输出1~100之和
            while (i<=100){
                sum += i;//sum = sum + i;
                i++;
            }
            System.out.println(sum);
        }
    }
    
  • do while 循环

    //先执行再判断,代码至少能执行一次
    do {
        //代码语句
    }while(布尔表达式);
    
    //for example
    package com.chao.struct;
    
    public class DoWhileDemo01 {
        public static void main(String[] args) {
            int i = 0;
            int sum = 0;
    		//输出1~100之和
            do {
                sum += i;
                i++;
            }while (i<=100);
            System.out.println(sum);
        }
    }
    
  • for 循环

    //for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构
    for (初始化;布尔表达式;更新){
        //代码语句
    }
    
    //for example
    package com.chao.struct;
    
    public class ForDemo04 {
        public static void main(String[] args) {
            //九九乘法表
            for (int i = 1; i <= 9; i++) {
                for (int j = 1; j <= i; j++) {
                    System.out.print(j+"*"+i+"="+(j*i)+"\t");
                }
                System.out.println();
            }
        }
    }
    
  • 增强for循环

    //java5引入了一种主要用于数组或稽核的增强型for循环。
    for (声明语句:表达式){
        //代码语句
    }
    
    //for example
    package com.chao.struct;
    
    public class ForDemo05 {
        public static void main(String[] args) {
            int[] numbers = {10,20,30,40,50};//定义了一个数组
            for (int i = 0; i < 5; i++) {
                System.out.println(numbers[i]);
            }
            System.out.println("======");
            for (int x:numbers){
                System.out.println(x);
            }
            //以上两种for效果一样
        }
    }
    

5、 break & continue

  • break

    //break再任何循环语句的主题部分,均可用break控制循环的流程。
    //break用于强行退出循环,不执行循环中的剩余语句。
    
    //for example
    package com.chao.struct;
    
    public class BreakDemo01 {
        public static void main(String[] args) {
            int i = 0;
            while (i <100){
                i++;
                System.out.println(i);
                if (i == 30){
                    break;
                }
            }
        }
    }
    
  • continue

    //contiune语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否是否循环的判定。
    
    //for example
    package com.chao.struct;
    
    public class ContinueDemo01 {
        public static void main(String[] args) {
            int i = 0;
            while (i < 100){
                i++;
                if (i%10==0){
                    System.out.println();
                    continue;
                }
                System.out.print(i+"\t");
            }
        }
    }
    

6、练习

  • 打印三角形

    package com.chao.struct;
    
    public class TastDemo01 {
        public static void main(String[] args) {
            //打印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();
            }
        }
    }
    
posted @ 2021-10-07 22:57  小超and车儿  阅读(24)  评论(0)    收藏  举报