PEKING ACM ID1000 --JAVA的输入输出

  1. 基本知识

流:流是字节序列的抽象
文件是数据的静态存储形式,而流是指数据传输的形态

流分为两大类:节点流和过滤流类(也叫做处理流)

InputStream:描述了所有的输入流的抽象概念,抽象类,其他所有的输入流都是InputStream的子类
方法:
int read():从输入流中读取一个字节数据,并转换为int数据类型(将一个字节数据放到int数据(占4个字节)的低字节,范围为0-255);若无子节可以读取,则发生阻塞,返回-1;
int read(byte[] b):
int read(byte[] b,int off,int end):
long skip(long n):跳过第n个字节,并返回跳过的个数n;包装流(过滤流、处理流)
int avaliable():
void mark(int readlimit):从当前的标志开始,最多可以读取多少(过滤流、处理流)
void reset():(过滤流、处理流)
boolean markSupported():
void close():

OutputStream:描述了所有的输出流的抽象概念,抽象类,其他说有输出流都是OutputStream的子类。
方法:
void write(int b):
void write(byte[] b):
void write(byte[] b,int off,int end):
void flush():清空类中缓冲区的数据,并输出到输出流
void close():
Java中流的类图-字节流

InputStream和OutputStream为所有输入和输出流(字节流)的父类,它们是Abstract类(不能被继承),用于被继承。
Reader和Writer为所有输入和输出流(字符流)的父类,它们是Abstract类(不能被继承),用于被继承。
它们均是节点流,继承于它们的那些子类为过滤流(也可以叫做包装流)

2、ID1000 编程:

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

public class SumDemo {
    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));

        String line = stdin.readLine();
        StringTokenizer st = new StringTokenizer(line);
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        System.out.println(a+b);
    }

}

14830608 Sunrise_yms 1000 Accepted 1848K 532MS Java 583B 2015-10-20 15:56:39

System.in:为InputStream的一个实例;InputStreamReader时将字节流转换为字符流;BufferedReader又封装了InputStreamReader,可以读取一行(readLine);

StringTokenizer是java中object类的一个子类,默认是使用” \t\n\r\f”作为分隔符;
见源码StringTokenizer的构造方法:

public StringTokenizer(String str)
{
    this(str," \t\n\r\f",false);
}

该功能类似于String的split方法。由于StringTokenizer是出于兼容性的原因而被保留的遗留类,建议使用String的split方法或java.util.regex;
替换为split方法后代码如下:

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

public class SumDemo {
    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));

        String line = stdin.readLine();
//      StringTokenizer st = new StringTokenizer(line);
//      int a = Integer.parseInt(st.nextToken());
//      int b = Integer.parseInt(st.nextToken());
//      System.out.println(a+b);

        String[] read = line.split(" ");
        int a = Integer.parseInt(read[0]);
        int b = Integer.parseInt(read[1]);
        System.out.println(a+b);

    }

}

14835421 Sunrise_yms 1000 Accepted 1932K 594MS Java 561B 2015-10-21 21:40:57

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值