Scanner和bufferreader读取控制台字符的区别

从开始学习Java就用了scanner,因为比较简单每当遇到空格键或者换行键则读取下一个字符,一般用法

while(input.hasNextInt()){
int n = input.nextInt();
int t = input.nextInt();
int c = input.nextInt();
int[] a = new int[n];
for(int i = 0;i < n;i++){
a[i]=input.nextInt();
}

这样就可以读取若干行以空格键或者换行键输入,但是今天做一个在线编程时发现bufferreader比scanner快,虽然比scanner占用内存多一些

bufferreader的输入只能使用readline()的方式读取一行文本,如果想将BufferedReader .readLine()的文本(默认是字符串类型)转换成其他类型的话,需要调用相应的方法(比如说想换成int类型的话,调用Integer.parseInt(BufferedReader .readLine()方法去转换格式))

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String str;

        while((str=br.readLine())!=null){

            String[] s = str.trim().split(" ");

            int n = Integer.parseInt(s[0]);

            int t = Integer.parseInt(s[1]);

            int c = Integer.parseInt(s[2]);

            int[] value = new int[n];

            if((str=br.readLine())!=null){

                String[] s2 = str.trim().split(" ");

                for(int i =0;i<n;i++){

                    value[i] = Integer.parseInt(s2[i]);

                }

            }

2.trim()的用法

trim是去掉字符串首尾的空格

3.parseInt()函数

Integer.parseInt(String s)将string返回int数据

Integer.parseInt(String s,int i)将i进制数据转成10进制

时间: 2024-08-07 23:31:29

Scanner和bufferreader读取控制台字符的区别的相关文章

Java 读取输入字符和字符串

1. 使用Scanner读取字符和字符串 3 /** 4 * Created by SheepCore on 2020-2-26 5 */ 7 public class Main { 8 public static void main(String[] args) { 9 Scanner scan = new Scanner(System.in); //声明一个Scanner对象,初始输入流为控制台 10 String name = scan.nextLine(); //读取键盘输入字符串(包括

再论流之读取控制台输入

在java1.0中,执行控制台输入的唯一方法是使用字节流.现在仍然可以使用字节流读取控制台输入.但是,对于商业应用程序,读取控制台输入的更好方法是使用面向字符的流.使用面向字符的流可以使程序更容易国际化和维护. 在Java中,控制台输入是通过从System.in读取完成的.为了获得与控制台关联的基于字符的流.可以在BufferedReader对象中封装System.io.BufferedReader支持缓存的输入流.通常使用的构造函数如下所示: BufferedReader(Reader inp

字节流与字符流区别

文章转自http://blog.csdn.net/zxman660/article/details/7875799 字节流与字符流 先来看一下流的概念: 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件. 字节流与字符流 在java.io包中操作文件内容的主要有两大类:字节流.字符流,两类都分为输入和输出操作.在字节流中输出数据

JAVA读取控制台的输入【转】

前面介绍了使用IO类实现文件读写的示例,其实在很多地方还需要使用到IO类,这里再以读取控制台输入为例子来介绍IO类的使用. 控制台(Console)指无图形界面的程序,运行时显示或输入数据的位置,前面的介绍中可以使用System.out.println将需要输出的内容显示到控制台,本部分将介绍如何接受用户在控制台中的输入. 使用控制台输入是用户在程序运行时和程序进行交互的一种基础手段,这种手段是Windows操作系统出现以前,操作系统位于DOS时代时,用户和程序交互的主要手段.当然,现在这种交互

读取控制台的输入

1.创建InputStreamReader类的对象,参数为System.in 2.创建BufferedReader类的对象,参数为InputStreamReader类的对象 3.准备待写入文件 4.String 临时存储与结束对比符 5.使用readLine()方法读取控制台,等于null结束循环(其实永远不会为null) 6.如果输入与结束对比符一样则结束循环(break)(使用equalsIgnoreCase()不区分大小写) 7.写入文件 8.关闭能关闭的(InputStreamReade

java如何在文件中读取一个字符串并创建以这个字符为名字的类的对象

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">我们一般用properties或者XML文件作为资源存储的文件,现在主要介绍一下对properties的操作</span> 1.我们在src文件下新建一个名称为config的包 2.在config下新建一个file,把它命名为demo.properties 3. 把下面的几段

[C#]使用Process的StandardInput与StandardOutput写入读取控制台数据

本文为原创文章.源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称.作者及网址,谢谢! 开发工具:VS2017 语言:C# DotNet版本:.Net FrameWork 4.0及以上 一.为了演示使用程序读取控制台数据,现在需要编写一个控制台程序,代码如下: using System; namespace Test { class Program { static void Main(string[] args) { Console.WriteLine("Hello Worl

(六)read读取控制台输入

1.基本语法 read(选项)(参数) 选项: -p:指定读取值时的提示符: -t:指定读取值时等待的时间(秒). 参数 变量:指定读取值的变量名 2.案例实操 (1)提示7秒内,读取控制台输入的名称 [atguigu@hadoop101 datas]$ touch read.sh [atguigu@hadoop101 datas]$ vim read.sh #!/bin/bash read -t 7 -p "Enter your name in 7 seconds " NAME ec

5、shell-read读取控制台输入

1.基本语法 read(选项)(参数) 选项: -p:指定读取值时的提示符: -t:指定读取值时等待的时间(秒). 参数 变量:指定读取值的变量名 2.案例实操 (1)提示7秒内,读取控制台输入的名称 [[email protected] datas]$ touch read.sh [[email protected] datas]$ vim read.sh #!/bin/bash read -t 7 -p "Enter your name in 7 seconds " NAME ec