Java流程控制

Scanner对象

  • java.util.Scanner 可以通过Scanner获取用户的的输入

  • 基本语法

    Scanner s  = new Scanner(System.in);
    
  • 通过Scanner类的next()与nextLine()方法获取输入的字符串,再度取前我们一般需要使用hasNext()与hasNextLine()判断是否有输入数据。

  • 使用完及时关闭。

    scanner.close()
    

next()

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

  2. 对输入的有效字符之前用到的空白,next()方法会自动将其舍掉。

  3. 只有输入有效字符后才将其后面的空白作为分隔符或者结束符。

  4. next()不能得到带有空格的字符。

    import java.util.Scanner;
    public class Demo01 {
        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);
            }
            //凡是属于IO流的类如果不关闭就会一直占用资源,养成良好的习惯用完关掉。
            scanner.close();
        }
    }
    

    输入hello word返回只有hello,空格及之后的word被舍去。

nextLine()

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

  • 可以获得空白。

import java.util.Scanner;
public class Demo01 {
    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);
        }
        //凡是属于IO流的类如果不关闭就会一直占用资源,养成良好的习惯用完关掉。
        scanner.close();
    }
}

输入hello word,输出hello word


顺序结构

  • Java的基本结构就是顺序结构

  • 程序从上往下依次执行

    package struct;
    
    public class SequenceDemo01 {
        public static void main(String[] args) {
    
            System.out.println("hello1");
            System.out.println("hello2");
            System.out.println("hello3");
            System.out.println("hello4");
            System.out.println("hello5");
        }
    }
    

执行结果

hello1
hello2
hello3
hello4
hello5

选择结构

  • if单选择结构

    • 我们判断一个东西是否可行,然后我们去执行,这样的一个过程在程序中用if语句来表示。

    • 语法

      if(布尔表达式){
          //如果表达式为ture将执行语句
      }
      
      package struct;
      import java.util.Scanner;
      public class IfDemo01 {
          public static void main(String[] args) {
              Scanner scanner = new Scanner(System.in);
              System.out.println("请输入一个内容:");
              String s = scanner.nextLine();
              //equals:判断字符串是否相等
              if (s.equals("hello")){
                  System.out.println(s);
              }
              System.out.println("End");
              scanner.close();
      
          }
      }
      

      输入“hello”,则输出:

      hello
      End
      

      输入“你好“,则输出:

      End
      
  • if双选择结构

    • 语法

      if(布尔表达式){
      	//如果表达式为true则执行
      }else{
          //如果表达式为false则执行
      }
      

    示例

    package struct;
    import java.util.Scanner;
    public class IfDemo02 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
    
            //考试分数大于60及格,小于60则不及格
            System.out.println("请输入成绩:");
            double score = scanner.nextDouble();
            if (score >= 60){
                System.out.println("及格");
            }else{
                System.out.println("不及格");
            }
    
        }
    }
    
  • if多选择结构

    • 语法

      if(布尔表达式1){
          //如果表达式1的值为true,则执行代码;
      }else if(布尔表达式2){
          //如果表达式2的值为true,则执行代码;
      }else if(布尔表达式3){
          //如果表达式4的值为true,则执行代码;
      }else {
          //如果以上表达式都不为true,则执行代码。
      }
      

    示例

    package struct;
    
    import java.util.Scanner;
    
    public class IfDemo03 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
    
            //考试分数大于60及格,小于60则不及格
            System.out.println("请输入成绩:");
            double score = scanner.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>=60){
                System.out.println("C级");
            }else if (score<60 && score>=0){
                System.out.println("D级");
            }else{
                System.out.println("成绩不合法");
            }
            scanner.close();
        }
    }
    
    
  • switch多选择结构

    • switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
    • switch 语句中变量的类型可以为
      • byte、short、int、或者char/
      • 从Java SE7 开始switch支持字符串String类型了。
      • 同时case 标签必须为字符串常量或字面量。

    例子:

    package struct;
    import java.util.Scanner;
    public class SwitchDemo01 {
        public static void main(String[] args) {
           //case穿透:没写break
            Scanner scanner = new Scanner(System.in);
            String s = scanner.next();
            char grade = s.charAt(0);
            switch (grade){
                case 'B':
                    System.out.println("良好");
                    break;//可选
                case 'C':
                    System.out.println("及格");
                    break;//可选
                case 'D':
                    System.out.println("挂科");
                    break;//可选
                default:
                    System.out.println("未知等级");
    
            }
        }
    }
    

循环结构

  • while循环

    • while是最基本的循环

      while(布尔表达式){
          //循环内容
      }
      
    • 只要布尔表达式为true,循环就会一直循环下去

    • 我们大多数情况会让循环停下来,我们需要让一个表达式来结束循环

    • 少部分情况循环会一直执行,比如服务器的请求响应监听。

      package struct;
      
      public class WhileDemo03 {
          public static void main(String[] args) {
              //计算 1+2+3+4+·····+100
      
              //高斯的故事
              int i = 0;
              int mun = 0;
              while (i<100){
                  i++;
                  mun=mun+i;
                  System.out.println("+"+i);
              }
              System.out.println(mun);
          }
      }
      
      
  • do-while

    • 对于while语句而言,如果不满足条件,则不能进入循环。又有时候我们即使不满足条件,也要至少执行一次。

    • 格式

      do {
          //代码语句
      }while(布尔表达式);
      
      
    • while和do-while的区别

      • while先判断后执行
      • Do...while总是保证循环体最少执行一次。
  • for循环

    • 虽然所有的循环都可以使用while或者do-while表示,但是—for循环可以使循环变得更加简单。

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

    • for循环的执行次数实在执行前就确定的。语法格式如下:

      for(初始化;布尔表达式;更新){
          //代码语句
      }
      
    • IDEA高效写法:以100次迭代循环为例

      100.for

break和continue

  • break在任何循环语句的主体部分,均可用break控制循环的流程。用于强行退出循环不执行剩余语句。
  • continiue语句用于终止某次循环过程,用于跳过某次循环剩余步骤,即跳过循环体中未执行的语句,直接进行下一次是否执行循环的判定。

goto关键字

  • goto关键字很在就在程序设计语言中出现。尽管goto认识Java的一个保留字,但仍未在语言中正式使用;Java没有goto。然而,在break和continue这两个关键字的身上,我们任然能看出一些goto的影子---单标签的break和continue。
  • “标签”是指后面跟一个冒号的标识符,列如:label:
  • 对Java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一的理由是:我们希望在其嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但随着标签使用,他们就会中断到存在标签的地方。

练习

  • 打印直角三角形

    • 逐行打印(for循环双层嵌套)
    public class StructDemo {
        //用“*”画一个等腰三角形
        public static void main(String[] args) {
            for (int i = 5; i >= 1; i--) {//规定三角形的行数为5
                //打印一个倒直角三角形
                for (int j = 1;j <= i;j++) {
                    System.out.print(" ");
                }
                //打印左边直角三角形
                for(int k = 5;k >= i;k--){
                    System.out.print("*");
                }
                //打印右边直角三角形
                for(int k = 4;k >= i;k--){
                    System.out.print("*");
                }
                System.out.println();
    
    
            }
    
        }
    }
    
    

posted on 2020-07-22 10:24  dulling缘  阅读(33)  评论(0)    收藏  举报

导航