• System类与两种输入流


    1.System类对I/O的支持
    系统输出System.out.println 是利用了I/O流的模式完成的。实际是打印流PrintStream对象

    System类中定义了三个操作的常量

    1.标准/系统输出(显示器)

    public final static PrintStream out
    1
    2.标准错误输出,也是打印流对象,除了颜色是红色外与System.out 别无二致

    public final static PrintStream err
    1
    3.标准输入(键盘)是 InputStream对象,没有任何包装

    public final static InputStream in
    1
    2.两种输入流
    由于JDK 1.0提供的System.in 太难用

    JDK1.1之后扩展了BufferedReader 类 JDK 1.5之后提供了java.util.Scanner类

    2.1BufferedReader类
    BufferedReader类属于一个缓冲输入流,而且是一个字符流的操作对象。在Java中对于缓冲区流也分为两类:字节缓冲流(BufferedInputStream)、字符缓冲流(BufferedReader)

    BufferedReader 类的定义和构造方法

    public class BufferReader extends Reader//定义
    public BufferedReader(Reader in)//构造方法
    1
    2
    BufferedReader类提供如下方法 可以直接读取一行数据(以回车为换行符)

    String readLine() throws IOException
    1
    代码示例

    package JAVASE.io;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    /**
    * @Name:练习BufferedReader系统输入类
    * @Author:ZYJ
    * @Date:2019-05-19-20:18
    * @Description:
    */
    public class BufferedReaderTest {
    public static void main(String[] args) throws IOException {
    BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("请输入信息:");
    String str = buf.readLine();//默认回车换行
    System.out.println("输入信息为:"+str);
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    2.2 java.util.Scanner 类
    打印流解决的是OutputStream 类的缺陷,BufferedReader解决的是InputStream类的缺陷。而Scanner解决的是BufferedReader类的缺陷,

    Scanner是一个专门进行输入流处理的程序类,利用这个类可以方便的处理各种数据类型,同时也可以结合正则表达式进行各项处理。

    2.2.1 方法
    1.判断是否含有指定数据

    public boolean hasNextXxx()//各种数据类型
    1
    2.取得指定的数据类型

    public 数据类型 nextXxx()
    1
    3.定义分隔符

    public Scnner useDelimiter(Pattern pattern)
    1
    4.构造方法

    public Scnner(InputStream source)
    1
    代码示例 :使用Scanner类实现数据输入

    package JAVASE.IOtext;
    import java.util.Scanner;
    /**
    * @Name:Scnner 类的练习
    * @Author:ZYJ
    * @Date:2019-05-22-10:43
    * @Description:
    */
    public class ScannerTest {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入数据:");
    //输入内容判空操作
    if (scanner.hasNext()) {
    //取得指定的输入流
    System.out.println("输入的内容为" + scanner.next());
    }
    //关闭流
    scanner.close();
    }
    }
    //默认以 结束
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    代码示例:使用Scanner类接收其他数据类型数据

    package JAVASE.IOtext;
    import java.util.Scanner;

    /**
    * @Name:Scanner 与任意类型的转换
    * @Author:ZYJ
    * @Date:2019-05-22-11:32
    * @Description:
    */
    public class ScannerPrint {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入年龄");
    if(scanner.hasNext()){
    int age = scanner.nextInt();
    System.out.println("年龄为:"+age+"岁");
    }else{
    System.out.println("输入内容非法");
    }
    scanner.close();
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    2.2.2 Scanner类与正则表达式
    **正则表达式:**是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

    给定一个正则表达式和另一个字符串,我们可以达到如下的目的:

    给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”):
    可以通过正则表达式,从字符串中获取我们想要的特定部分。
    Scanner 类可以对接受的数据类型使用正则表达式判断

    代码示例:利用正则表达式进行判断

    package JAVASE.IOtext;

    import java.util.Scanner;

    /**
    * @Name:Scanner类练习
    * @Author:ZYJ
    * @Date:2019-05-22-11:22
    * @Description: 利用正则表达式进行判断
    */
    public class TestPrint {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入生日:");
    if(scanner.hasNext("\d{4}-\d{2}-\d{2}")){
    //取得指定输入流,并将其转化为字符串
    String birthday = scanner.next();
    System.out.println("输入的生日为:"+birthday);

    }else{
    System.out.println("输入格式非法,不是生日!!!");
    }
    //关闭流
    scanner.close();
    }
    }
    ---------------------

  • 相关阅读:
    Jquery+ajax+bootstrap
    Js+Jquery
    css(2)+JS
    css
    mysql 高级
    Git
    Redis
    Nginx
    python爬虫 | 一条高效的学习路径
    拉勾网爬取全国python职位并数据分析薪资,工作经验,学历等信息
  • 原文地址:https://www.cnblogs.com/hyhy904/p/10930807.html
Copyright © 2020-2023  润新知