• Scanner


    Scanner 方便我们操作 System.in, 因为 System.in 本身是 inputStream.

    基本语法是:

    Scanner scan = new Scanner(System.in); // 这样相当于我打开了一个对象, 这个对象一直可以接收来自标准输入的值, 保存在scan对象中.

    即便是程序运行期间, 这个对象也还是在等待着接收用户的输入. 这点与传统 C 语言不同, 传统C 语言需要使用一个函数, 比如 Input(), 每次调用这个函数才接收一次用户输入.

    而这个 Scanner 相当于说一直等待着输入. 

    如果是字符串, 使用 next() 或 nextLine(), 但是操作之前要先判断 hasNext, hasNextLine

    举例: nextLine

    import java.util.Scanner;
     
    public class ScannerDemo {
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            // 从键盘接收数据
     
            // nextLine方式接收字符串
            System.out.println("nextLine方式接收:");
            // 判断是否还有输入
            if (scan.hasNextLine()) {
                String str2 = scan.nextLine();
                System.out.println("输入的数据为:" + str2);
            }
            scan.close();
        }
    }

    next() 与 nextLine() 区别

    next():

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

    nextLine():

    • 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
    • 2、可以获得空白。

    如果要 Int 或 float 类型数据, 也有支持, 但是最好之前使用 hasNextInt, 或者类似 hasNextFloat 判断之后再赋值, 否则会抛异常.

    package Example200;
    
    import java.util.Scanner;
    
    public class LeapYear {
    
        public static void main(String[] args) {
            // Scan处理输入, System.in 是真正接收磁盘输入的, 而且是秩序等待监听
            Scanner scan = new Scanner(System.in);
            int year = 0;
            if (scan.hasNextInt()) {
                year = scan.nextInt();
            }
            if (year % 4 ==0 && year % 100 != 0 || year % 400 == 0) {
                System.out.println(year + " 是闰年");
            } else {
                System.out.println(year + " 不是闰年");
            }    
        }
    }
    package com.test.leon;
    
    import java.util.Scanner;
    
    public class TestScanner {
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            
            int year = 0;
            while (true) {
                if (scanner.hasNextInt()) {
                    year = scanner.nextInt();
                    if (year >= 1900) {
                        break;
                    } else {
                        System.out.println("Please input > 1900");
                    }
                }
            }
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                System.out.println(year + " yes");
            } else {
                System.out.println(year + " no");
            }
            
            scanner.close();
        }
    
    }
  • 相关阅读:
    js 截取指定的字符串
    WebSocket实例 Vue中使用websoket
    Vue 水半球样式、圆形水进度条、在线编辑
    Elasticsearch学习笔记3 -- 文档操作
    Elasticsearch学习笔记2 -- 索引库的操作
    Elasticsearch学习笔记1 -- 安装elasticsearch
    Docker学习笔记5 -- Docker-compose
    Docker学习笔记4 -- Dockerfile
    Docker学习笔记3 -- 数据卷
    Docker学习笔记2 -- 常用命令
  • 原文地址:https://www.cnblogs.com/moveofgod/p/12941015.html
Copyright © 2020-2023  润新知