当前位置: 首页 > news >正文

Scanner与BufferReader的区别

直接上例子:

import java.util.Scanner;   
 public class TestScanner
{   
    public static void main(String[] args)
  {   
           Scanner scan = new Scanner(System.in);   
           System.out.println("请输入一个字符串:");   
           System.out.println("您输入的字符串是:" + scan.next());   
    }   
 }   
  运行上面的程序,你将会看到你输入的字符串将在下面原样显示出来.

  我们来看看这个程序中每条语句的意思:
  new 是创建一个对象,程序中new的意思是创建了一个Scanner类的对象scan.但是在创建Scanner类的对象时,需要用System.in作为它的参数,

也可以将Scanner看作是System.in对象的支持者,System.in取得用户输入的内容后,交给Scanner来作一些处理.

  Scanner类中提供了多个方法:
         next():取得一个字符串;
         nextInt():将取得的字符串转换成int类型的整数;
         nextFloat():将取得的字符串转换成float型;
         nextBoolean():将取得的字符串转换成boolean型;

  用 Scanner获得用户的输入非常的方便,但是Scanner取得输入的依据是空格符,包括空格键,Tab键和Enter键.当按下这其中的任一键

时,Scanner就会返回下一个输入 .当你输入的内容中间包括空格时,显然,使用Scanner就不能完整的获得你输入的字符串.这时候我们可以考虑

使用BufferedReader类取得输入.其实在Java SE 1.4及以前的版本中,尚没有提供Scanner方法,我们获得输入时也是使用BufferReader的.
  BufferedReader类位于java.io包中,所以要使用这个类,就要引入java.io这个包:import java.io.BufferedReader.
  使用BufferedReader对象的readLine()方法必须处理java.io.IOException异常(Exception).
  使用BufferedReader来取得输入,理解起来要复杂得多.但是使用这个方法是固定的,每次使用前先如法炮制就可以了.

Java代码 :

 BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));   
 String text = buffer.readLine();   
 

  readLine()方法会返回用户在按下Enter键之前的所有字符输入,不包括最后按下的Enter返回字符.
  
完整的示例程序如下:
Java代码

  import java.io.BufferedReader;   
  public class TestBufferedReader
{   
     public static void main(String[] args) throws IOException
  {   
        BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));   
        System.out.println("请输入一串字符串");   
        String text = buffer.readLine();   
        System.out.println("您输入的字符串是:" + text);   
  }   
   
}   

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Android各种荧幕分辨率
  • MD5在java中的使用
  • android sqlite3 adb
  • android ADB常用的命令
  • Android中自定义ViewGroup
  • jstl学习
  • Eclipse中java文件和jsp字体大小设置
  • mysql卸载
  • 长连接与短连接
  • 我的工具连接
  • mongodb 安装配置
  • nginx 安装配置
  • Win7 家庭版远程连接问题
  • mysql 表结构文档整理
  • mysql分组获取最大时间的数据
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • create-react-app项目添加less配置
  • JavaScript设计模式与开发实践系列之策略模式
  • LintCode 31. partitionArray 数组划分
  • MD5加密原理解析及OC版原理实现
  • MYSQL 的 IF 函数
  • php ci框架整合银盛支付
  • Python十分钟制作属于你自己的个性logo
  • underscore源码剖析之整体架构
  • Vue.js源码(2):初探List Rendering
  • Vultr 教程目录
  • 关于for循环的简单归纳
  • 排序(1):冒泡排序
  • 使用API自动生成工具优化前端工作流
  • 自定义函数
  • 做一名精致的JavaScripter 01:JavaScript简介
  • NLPIR智能语义技术让大数据挖掘更简单
  • 我们雇佣了一只大猴子...
  • "无招胜有招"nbsp;史上最全的互…
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • $refs 、$nextTic、动态组件、name的使用
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (javascript)再说document.body.scrollTop的使用问题
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (转)nsfocus-绿盟科技笔试题目
  • (转)创业家杂志:UCWEB天使第一步
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .net refrector
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .Net 高效开发之不可错过的实用工具
  • .NET 给NuGet包添加Readme
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • :class的用法及应用
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @31省区市高考时间表来了,祝考试成功
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [Algorithm][动态规划][01背包问题][目标和][最后一块石头的重量Ⅱ]详细讲解
  • [asp.net core]project.json(2)