• if语句&switch&Scanner


    if流程控制语句:

    if 语句的用语法如下:

    if(boolean表达式){
         //如果条件为true那么执行
    }

    只有条件为true时才会执行,否则执行if语句后面的代码。

    实例代码:

    public class Mian {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            if (false) {
                // 条件成立执行
                System.out.print("我成功了");
            }
        }
    
    }

    控制台打印我成功了

    if...else语句

    if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。

    if…else 的用法如下:

    if(false){
    //条件true执行
    }else{
    //当条件为false则执行
    }

    实例代码:

    public class Mian {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            if (false) {
                // 条件成立执行
                System.out.print("我成功了");
            }else {
        
    // 条件不成立执行
                System.out.println("我失败了");
            }
        }
    
    }

    if...else if...else 语句

    if 语句后面可以跟 elseif…else 语句,这种语句可以检测到多种可能的情况。

    使用 if,else if,else 语句的时候,需要注意下面几点:

    • if 语句至多有 1 个 else 语句,else 语句在所有的 elseif 语句之后。
    • if 语句可以有若干个 elseif 语句,它们必须在 else 语句之前。
    • 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行

    if...else if语法格式如下:

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

    实例代码:

    public class Test {
       public static void main(String args[]){
          int x = 30;
     
          if( x == 10 ){
             System.out.print("x等于10");
          }else if( x == 20 ){
             System.out.print("x等于20");
          }else if( x == 30 ){
             System.out.print("x等于30");
          }else{
             System.out.print("这是 else 语句");
          }
       }
    }

    控制台打印:x等于30

    嵌套的 if…else 语句

    使用嵌套的 if…else 语句是合法的。也就是说你可以在另一个 if 或者 elseif 语句中使用 if 或者 elseif 语句。

    语法

    嵌套的 if…else 语法格式如下:

    if(布尔表达式 1){
       ////如果布尔表达式 1的值为true执行代码
       if(布尔表达式 2){
          ////如果布尔表达式 2的值为true执行代码
       }
    }

    实例代码:

    public class Mian {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int a=3;
            int b=4;
            if (a==3) {
                if (4==4) {
                    System.out.println("a等于3,b等于4");
                }
            }
        }
    
    }

    接下来介绍一下switch语句:

    switch语法:

    switch(expression){
        case value :
           //语句
           break; //可选
        case value :
           //语句
           break; //可选
        //你可以有任意数量的case语句
        default : //可选
           //语句
    }

    switch case 语句有如下规则:

    • switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。

    • switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。

    • case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。

    • 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。

    • 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。

    • switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。

    switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断。

    实例代码:

    public class Mian {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
        char grade='A';
        switch (grade) {
        case 'A':
            System.out.println("成绩为A");
            break;
        case 'B':
            System.out.println("成绩为B");
            break;
        case 'c':
            System.out.println("成绩为C");
            break;
        default:
            System.out.println("不知道什么成绩");
            break;
        }
        }
    
    }

    控制台打印:成绩为A

    如果 case 语句块中没有 break 语句时,JVM 并不会顺序输出每一个 case 对应的返回值,而是继续匹配,匹配不成功则返回默认 case

    public class Mian {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
        char grade='D';
        switch (grade) {
        case 'A':
            System.out.println("成绩为A");
            
        case 'B':
            System.out.println("成绩为B");
        
        case 'c':
            System.out.println("成绩为C");
            
        default:
            System.out.println("不知道什么成绩");
                     //如果匹配不到则执行默认代码       
            break;
        }
        }
    
    }     

    控制台打印:不知道什么成绩

    如果 case 语句块中没有 break 语句时,匹配成功后,从当前 case 开始,后续所有 case 的值都会输出

    public class Mian {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
        char grade='A';
        switch (grade) {
        case 'A':
            System.out.println("成绩为A");
        case 'B':
            System.out.println("成绩为B");
        case 'c':
            System.out.println("成绩为C");
        default:
            System.out.println("不知道什么成绩");
        }
        }
    
    }

    控制台打印:

    成绩为A

    成绩为B

    成绩为C

    不知道什么成绩

    如果当前匹配成功的 case 语句块没有 break 语句,则从当前 case 开始,后续所有 case 的值都会输出,如果后续的 case 语句块有 break 语句则会跳出判断。

    public class Mian {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
        char grade='A';
        switch (grade) {
        case 'A':
            System.out.println("成绩为A");
        case 'B':
            System.out.println("成绩为B");
            break;
    //这里会跳出switch语句
    case 'c': System.out.println("成绩为C"); default: System.out.println("不知道什么成绩"); } } }

    控制台打印:

    成绩为A

    成绩为B

    再来介绍一下Scanner(扫描仪)

    Scanner类主要是接收控制台里输入的数据

    Scanner语法:

    Scanner in=new Scanner(System.in);

    Scanner使用的三步走:

    1. 创建扫描仪并导入包import java.util.Scanner;
      Scanner in=new Scanner(System.in);
    2. 使用扫描仪
      String name=in.next();
    3. 关闭扫描仪
      in.close();

    Scanner支持哪些数据输入呢:

    1. byte 对应的是nextByte();
    2. short对应的是nextShort();
    3. int 对应的是nextInte();
    4. long对应的是nextLong();
    5. double对应的是nextDouble();
    6. float对应的是nextFloar();
    7. String对应的是next();
    8. char没有

    接下来我们演示一个最简单的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:

    next:

    import java.util.Scanner;
    
    public class Mian {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
        
        Scanner in=new Scanner(System.in);
        if (in.hasNext()) {
            //判断是否有数据输入
            String str1=in.next();
            System.out.println(str1);
        }
        in.close();
        }
    
    }

    在控制台输入了:开始 空格 准备好了吗

    控制台打印:开始

    nextLine:

    import java.util.Scanner;
    
    public class Mian {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
        
        Scanner in=new Scanner(System.in);
        if (in.hasNextLine()) {
            //判断是否有数据输入
            String str1=in.nextLine();
            System.out.println(str1);
        }
        in.close();
        }
    
    }

    在控制台输入了:开始了空格  准备好了吗?

    控制台打印:开始了空格 准备好了吗

    next()与nextLine()对比:

    next():

    • 1、一定要读取到有效字符后才可以结束输入。
    • 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
    • 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
    • next() 不能得到带有空格的字符串。

    nextLine():

    • 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
    • 2、可以获得空白。
    你不会的东西,觉得难的东西,一定不要躲。先搞明白,后精湛,你就比别人优秀了。因为大部分人都不舍得花力气去钻研,自动淘汰,所以你执着的努力,就占了大便宜。奋斗就是每一天都很难,可一年比一年容易。不奋斗就是每一天都很容易,可一年比一年越难。怕吃苦的人吃苦一辈子,不怕吃苦的人吃苦一阵子。拼一个春夏秋冬,赢一个无悔人生
  • 相关阅读:
    Java 获取当前时间最近12个月(字符串)
    Java 取本月第一天和最后一天
    find_in_set()和in()比较
    Latex 箭头、下标、符号上下写文字、正方形和三角形
    LaTeX 公式字体大小设置
    哈希学习(2)—— Hashing图像检索资源
    局部敏感哈希-Locality Sensitivity Hashing
    Mathtype 公式显示方框
    Linux下安装MATLAB
    局部敏感哈希(Locality-Sensitive Hashing, LSH)
  • 原文地址:https://www.cnblogs.com/ahJava/p/9786636.html
Copyright © 2020-2023  润新知