java中Scanner输入字符串和BufferedReader输入字符串的区别

2024-09-01 14:58

本文主要是介绍java中Scanner输入字符串和BufferedReader输入字符串的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Scanner 和BufferedReader输入实例如下:

import java.io.*;
import java.util.Scanner;
public class C {
public static void main(String []args) throws IOException
{

    String x1,x2;
    int sum=0;

    System.out.print("BufferedReader方法\ninput two number:");

    //BufferedReader对象只将回车看作输入结束,得到的字符串
    BufferedReader myReader=new BufferedReader(new InputStreamReader(System.in));

    x1=myReader.readLine();
    x2=myReader.readLine();
    int a=Integer.parseInt(x1);
    int b=Integer.parseInt(x2);
    sum=a+b;
    System.out.printf("Sum=%d",sum);

    System.out.println("\n\nScanner 方法");
    Scanner sc=new Scanner(System.in);
    int a1,b1;
    a1=sc.nextInt();  

    //Scanner对象把回车,空格,tab键都看作输入结束,直接用sc.next()得到的是字符串形式
    b1=sc.nextInt();
    System.out.print("sum="+(a1+b1));    
  }
}


BufferedReader是字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取!速度要比Scanner快!而且也可以设置缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。


在创建Scanner类的对象时,需要用System.in作为它的参数,也可以将Scanner看作是System.in对象的支持者,System.in取得用户输入的内容后,交给Scanner来作一些处理.
Scanner类中提供了多个方法:
      next():取得一个字符串;
      nextInt():将取得的字符串转换成int类型的整数;
      nextFloat():将取得的字符串转换成float型;
      nextBoolean():将取得的字符串转换成boolean型;
    如果想读取正行文本,可以使用nextLine()方法;
   Scanner类位于java.util包中,要加上import java.util.Scanner; 用Scanner获得用户的输入非常的方便,但是Scanner取得输入的依据是空格符,包括空格键,Tab键和Enter键.当按下这其中的任一键时,Scanner就会返回下一个输入.当你输入的内容中间包括空格时,显然,使用Scanner就不能完整的获得你输入的字符串.这时候我们可以考虑使用BufferedReader类取得输入.其实在Java SE 1.4及以前的版本中,尚没有提供Scanner方法,我们获得输入时也是使用BufferReader的.


  BufferedReader类位于java.io包中,所以要使用这个类,就要引入java.io这个包

import java.io.BufferedReader. readLine()方法会返回用户在按下Enter键之前的所有字符输入,不包括最后按下的Enter返回字符.以Enter键为结尾。

使用BufferedReader对象的readLine()方法必须处理java.io.IOException异常(Exception).使用BufferedReader来取得输入,理解起来要复杂得多.但是使用这个方法是固定的,每次使用前先如法炮制就可以了

本文来源于:http://blog.sina.com.cn/s/blog_5fd837410100rtwk.html


另外,对于Scanner 和BufferedReader还可以有以下实例:

package com.demo;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;public class Demo {public static void main(String[] args) throws Exception {String m = new String(" ");int[] a = { 0, 0, 0 };BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));System.out.println("输入三个数(以一个空格分开): ");m = stdin.readLine();Scanner scan = new Scanner(m);//将输入的一行文本作为扫描对象for (int i = 0; i < a.length; i++) {a[i] = scan.nextInt();}System.out.println("输入数为: ");for (int i = 0; i < a.length; i++) {System.out.print(a[i] + " ");}}
}
对于Scanner ,是一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。扫描器可以从实现 Readable 接口的任何对象读取文本。

构造方法:

Scanner(File source)
          构造一个新的 Scanner,它生成的值是从指定文件扫描的。
Scanner(File source, String charsetName)
          构造一个新的 Scanner,它生成的值是从指定文件扫描的。
Scanner(InputStream source)
          构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。
Scanner(InputStream source, String charsetName)
          构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。
Scanner(Readable source)
          构造一个新的 Scanner,它生成的值是从指定源扫描的。
Scanner(ReadableByteChannel source)
          构造一个新的 Scanner,它生成的值是从指定信道扫描的。
Scanner(ReadableByteChannel source, String charsetName)
          构造一个新的 Scanner,它生成的值是从指定信道扫描的。
Scanner(String source)
          构造一个新的 Scanner,它生成的值是从指定字符串扫描的。


这篇关于java中Scanner输入字符串和BufferedReader输入字符串的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127264

相关文章

Java StringBuilder 实现原理全攻略

《JavaStringBuilder实现原理全攻略》StringBuilder是Java提供的可变字符序列类,位于java.lang包中,专门用于高效处理字符串的拼接和修改操作,本文给大家介绍Ja... 目录一、StringBuilder 基本概述核心特性二、StringBuilder 核心实现2.1 内部

SpringBoot AspectJ切面配合自定义注解实现权限校验的示例详解

《SpringBootAspectJ切面配合自定义注解实现权限校验的示例详解》本文章介绍了如何通过创建自定义的权限校验注解,配合AspectJ切面拦截注解实现权限校验,本文结合实例代码给大家介绍的非... 目录1. 创建权限校验注解2. 创建ASPectJ切面拦截注解校验权限3. 用法示例A. 参考文章本文

Java中字符编码问题的解决方法详解

《Java中字符编码问题的解决方法详解》在日常Java开发中,字符编码问题是一个非常常见却又特别容易踩坑的地方,这篇文章就带你一步一步看清楚字符编码的来龙去脉,并结合可运行的代码,看看如何在Java项... 目录前言背景:为什么会出现编码问题常见场景分析控制台输出乱码文件读写乱码数据库存取乱码解决方案统一使

Java Stream流与使用操作指南

《JavaStream流与使用操作指南》Stream不是数据结构,而是一种高级的数据处理工具,允许你以声明式的方式处理数据集合,类似于SQL语句操作数据库,本文给大家介绍JavaStream流与使用... 目录一、什么是stream流二、创建stream流1.单列集合创建stream流2.双列集合创建str

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建