资讯专栏INFORMATION COLUMN

Java中 Scanner和BufferedReader的区别

mushang / 3503人阅读

摘要:它本质上是使用正则表达式去读取不同的数据类型。类为了能够高效的读取字符序列,从字符输入流和字符缓冲区读取文本。用和两种方式实现以下场景用命令行输入一个数字,如果输出小于的所以质数,包括自己。

java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串。它本质上是使用正则表达式去读取不同的数据类型。

java.io.BufferedReader类为了能够高效的读取字符序列,从字符输入流和字符缓冲区读取文本。

用Scanner和BufferedReader两种方式实现以下场景:
用命令行输入一个数字m,如果m >1 输出小于m的所以质数,包括m自己。

Scanner 例子:

package sjtejcys;

import java.util.Scanner;

public class Primes {
    public static void main(String[] args) {
        System.out.println("请输入一个数字:");
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        if(m>1){
            if(m ==2)
                System.out.println(m);
            else 
            {
                int j = 0;
                System.out.println(2);
                for(int i = 3;i<=m;i++){
                    for(j =2;j

BufferedReader 例子:

package sjtejcys;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class PrimesBF {
    public static void main(String[] args) {
        try {
            System.out.println("请输入一个数字:");
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String str = null;
            while ((str = br.readLine()) != null) {
                int m = Integer.parseInt(str);
                if (m > 1) {
                    if (m == 2)
                        System.out.println(m);
                    else {
                        int j = 0;
                        System.out.println(2);
                        for (int i = 3; i <= m; i++) {
                            for (j = 2; j < m; j++)
                                if (i % j == 0)
                                    break;
                            if (j == i)
                                System.out.println(i);
                        }
                    }
                }
            }

            br.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

简单来说:
BufferedReader 是先把数据读到缓存区然后在写到硬盘里
Scanner是直接往硬盘些数据
BufferedReader 的效率比Scanner高

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66766.html

相关文章

  • javasocket

    摘要:服务器端线程实现首先将服务器独立成一个线程服务器线程接受客户端连接请求在构造函数中我们初始化服务器的,然后等待客户端的连接。 这次在java实验的时候,要求使用server socket编写服务器和客户端的网络通信。最开始认为应该是挺简单的,但是后来发现低估了它。出现了不少的问题,所以也在这里与大家分享。 问题描述 服务器程序的处理规则如下:1) 向客户端程序发送Verifying S...

    Ajian 评论0 收藏0
  • Java™ 教程(扫描)

    扫描 编程I/O通常涉及转换人们喜欢使用的整齐格式的数据,为了帮助你完成这些工作,Java平台提供了两个API,扫描器API将输入分解为与数据位相关联的单个标记,格式化API将数据组装成格式良好、可读的形式。 Scanner类型的对象对于将格式化输入分解为标记并根据其数据类型转换单个标记非常有用。 将输入分解为标记 默认情况下,扫描器使用空格分隔标记(空格字符包括空格、制表符和行终止符,有关完整列...

    dantezhao 评论0 收藏0
  • 《十万字Java入门练习100例》1-10例——纸上得来终觉浅,绝知此事要躬行

    摘要:代码实现在控制台打印总结本篇文章带大家搭好环境,并体验了控制台打印。输出结果总结熟练掌握取余和整除运算,大有作用。终止本次循环,继续执行下一次循环。 ?本文收录...

    keithyau 评论0 收藏0
  • Java基础知识整理

    摘要:有两个重要的子类异常和错误,二者都是异常处理的重要子类,各自都包含大量子类。错误是程序无法处理的错误,表示运行应用程序中较严重问题。异常由虚拟机抛出。迭代器通常被称为轻量级对象,因为创建它的代价小。 面向对象和面向过程的区别 面向过程 优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是...

    hankkin 评论0 收藏0
  • Java 输入/输出 I/O流 RandomAccessFile

    摘要:当使用节点流进行输入输出时,程序直接连接到实际的数据源,和时间的输入输出节点连接处理流则用于对一个已存在的流进行连接或封装,通过封装后的流来实现数据读写功能,处理流也被称为高级流。 文件的编码 文本文件就是字节序列,可以是任意编码形式。在中文操作系统上直接创建文本文件,则该文本文件只能识别ANSI编码,其他编码方式会产生乱码 package imooc.io; import java...

    Eirunye 评论0 收藏0

发表评论

0条评论

mushang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<