scanner对象,顺序及选择结构

scanner对象

  • 基本语法:

    • Scanner s = new Scanner(System.in)
      
  • 使用next()和nextLine()读取前,使用hasNext()和hasNextLine()来判断是否还有输入数据

  • next():

      1. 一定要读取到有效字符后才可以结束输入
      2. 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
      3. 只有输入有效字符后才将其后面输入的空白作为分隔符或结束符
      4. next()不能得到带有空格的字符串
    • package com.wyd.scanner;
      
      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()){
                  //使用next方式接收
                  String str = scanner.next();
                  System.out.println("输入的内容为:"+str);
              }
              //凡是属于IO流的类,如果不关闭就会一直占用资源,用完就关掉
              scanner.close();
      
          }
      }
      
  • nextLine():

      1. 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的 所有字符
      2. 可以获得空白
package com.wyd.scanner;

import java.util.Scanner;

public class Demo02 {
    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.close();
    }
}
package com.wyd.scanner;

import java.util.Scanner;

public class Demo03 {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入数据:");

        String str = scanner.nextLine();		//不判断是否还有输入

        System.out.println("输入的内容为:"+str);
    }
}
package com.wyd.scanner;

import java.util.Scanner;

public class Demo04 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        //从键盘接收数据
        int a = 0;
        float b = 0.0F;

        System.out.println("请输入整数数据:");

        //如果。。。那么。。。
        if (scanner.hasNextInt()){
            a = scanner.nextInt();
            System.out.println("整数数据:"+a);

        }else{
            System.out.println("输入的不是整数数据!");
        }

        System.out.println("请输入小数:");

        if (scanner.hasNextFloat()){
            b=scanner.nextFloat();
            System.out.println("输入的小数数据是:"+b);
        }else {
            System.out.println("输入的不是小数!");
        }

        scanner.close();
    }
}
package com.wyd.scanner;

import java.util.Scanner;

public class Demo05 {
    public static void main(String[] args) {
        //输入多个数字,并求和与平均值,每输入一个数字以回车确认,通过输入非数字字符来结束输入并执行结果
        Scanner scanner = new Scanner(System.in);
        //和
        double sum=0;
        //计算输入了多少个数字
        int m=0;
        //通过循环判断是否还有输入,并在里面对每一次进行求和和统计
        while (scanner.hasNextDouble()){
            double x=scanner.nextDouble();
            m++;
            sum=sum+x;
            System.out.println("你输入了第"+m+"个数据,这"+m+"个数据的和为:"+sum);
        }
        System.out.println(m+"个数的和为:"+sum);
        System.out.println("输入数字的个数为:"+m);

        scanner.close();
    }
}

顺序结构

package com.wyd.struct;

public class ShunXuDemo {
    public static void main(String[] args) {
        System.out.println("hello01");
        System.out.println("hello02");
        System.out.println("hello03");
        System.out.println("hello04");
    }
}

选择结构

if单选择结构:

if (布尔表达式) {
    //如果布尔表达式为true将执行的语句
}
package com.wyd.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();
    }
}

if双选择结构

if (布尔表达式) {
    //如果布尔表达式的值为true
} else {
    //如果布尔表达式的值为false
}
package com.wyd.struct;

import java.util.Scanner;

public class IfDemo02 {
    public static void main(String[] args) {
        //考试分数>=60分就及格,<60分就不及格
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入成绩:");
        int score=scanner.nextInt();
        if (score>=60){
            System.out.println("及格");
        } else {
            System.out.println("不及格");
        }

        scanner.close();
    }
}

if多选择结构

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

import java.util.Scanner;

public class IfDemo03 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

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

        System.out.println("请输入成绩:");
        int score=scanner.nextInt();

        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("成绩不合法");
        }
        scanner.close();
    }
}

嵌套的if结构

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

switch多选择结构

package com.wyd.struct;

public class SwitchDemo01 {
    public static void main(String[] args) {
        //case穿透            //switch 匹配一个具体的值
        char grade = 'C';

        switch (grade){
            case 'A':
                System.out.println("优秀");
                break;                    //可选,判断是否继续输出后续内容
            case 'B':
                System.out.println("良好");
                break;
            case 'C':
                System.out.println("及格");
                break;
            case 'D':
                System.out.println("再接再厉");
                break;
            case 'E':
                System.out.println("挂科");
                break;
            default:
                System.out.println("未知等级");
        }
    }
}
  • switch语句中的变量类型可以是:byte, short, int, char 或者 String。

  • 同时case标签必须为字符串常量或字变量

  • switch(expression){
        case value :
            //语句
            break; //可选,尽量写上
        case value :
            //语句
            break; //可选
        //你可以有任意数量的case语句
        default : //可选
            //语句
    }
    
  • 使用IDEA进行反编译class文件,看源码

    • 在file→project struct中查看输出文件夹,打开程序的out文件夹,将class文件复制到程序的包文件夹中,在IDEA中就可查看class文件的源码:
package com.wyd.struct;

public class SwitchDemo02 {
    public static void main(String[] args) {

        String name="狂神";
        //JDK7的新特性,表达式结果可以是字符串
        //字符的本质还是数字     使用哈希码转换

        //反编译   java-----class(字节码文件)-----反编译(IDEA)

        switch (name){
            case "秦疆":
                System.out.println("秦疆");
                break;
            case "狂神":
                System.out.println("狂神");
                break;
            default:
                System.out.println("弄啥嘞!");
        }
    }
}
posted @ 2021-10-11 23:05  wydilearn  阅读(50)  评论(0编辑  收藏  举报