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

相关文章

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

破茧 JDBC:MyBatis 在 Spring Boot 中的轻量实践指南

《破茧JDBC:MyBatis在SpringBoot中的轻量实践指南》MyBatis是持久层框架,简化JDBC开发,通过接口+XML/注解实现数据访问,动态代理生成实现类,支持增删改查及参数... 目录一、什么是 MyBATis二、 MyBatis 入门2.1、创建项目2.2、配置数据库连接字符串2.3、入

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与