scanner对象,顺序及选择结构

简介: scanner对象 基本语法: Scanner s = new Scanner(System.in) 使用next()和nextLine()读取前,使用hasNext()和hasNextLine()来判断是否还有输入数据 next(): 一定要读取到有效字符后才可以结束输入 对输入有效字符之前遇到的

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将执行的语句
}


微信图片_20220425163325.png


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
}


微信图片_20220425163333.png


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执行代码
}


微信图片_20220425163339.png


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文件的源码:


微信图片_20220425163350.png


微信图片_20220425163355.png


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("弄啥嘞!");
        }
    }
}


相关文章
|
5月前
|
C语言
C语言 郝斌 数组的增删改排序代码
C语言 郝斌 数组的增删改排序代码
【JAVASE】顺序和选择结构 下
【JAVASE】顺序和选择结构
【JAVASE】顺序和选择结构 上
【JAVASE】顺序和选择结构
|
4月前
|
算法 Java 大数据
Java多线程中顺序打印
Java多线程中顺序打印
54 2
Java多线程中顺序打印
|
5月前
|
Java
通过Scanner类读取数据。使用switch语句执行相应运算
这是一个Java计算器程序,接收用户输入的两个数字和运算符(+,-,*,/),通过Scanner类读取数据。使用switch语句执行相应运算,包括除法时检查除数是否为0,以防止错误。最后,它打印出计算结果。
39 1
|
5月前
顺序排号
顺序排号。
42 5
三个线程循环顺序打印
三个线程循环顺序打印
72 0
|
人工智能
循环结构 程序举例
循环结构 程序举例
64 0
|
机器学习/深度学习 Cloud Native 安全
1790. 仅执行一次字符串交换能否使两个字符串相等:简单模拟
这是 力扣上的 1790. 仅执行一次字符串交换能否使两个字符串相等 ,难度为 简单。
|
Java 编译器
[Java基础]基本概念(下)运算符,表达式和语句,分支,循环,方法,变量的作用域,递归调用
在上一篇文章[Java基础]基本概念(上)(标识符,关键字,基本数据类型)_小王师傅66的博客-CSDN博客中,我们学习了Java基础基本概念中的标识符,关键字,基本数据类型。这篇文章,我们将学习:运算符,表达式和语句,分支,循环,方法,变量的作用域,递归调用。