ACM模式Java最推荐输入输出方法

45 阅读1分钟

对于输入样式,可以分为两种情况:

  1. 给出了每组数据的长度,界限。
  2. 每个数据一行,未给出数据长度。

给出数据长度

import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.IOException;


public class IOtemplate {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StreamTokenizer in = new StreamTokenizer(br);
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
        in.nextToken();
        int rounds = (int)in.nval;
        for(int i = 0; i < rounds; i++) {
            in.nextToken();
            int n = (int)in.nval;

            
            out.println();
        }
        out.flush();
        out.close();
    }
}

按行读取输入

按行读取输入时:

  1. 每行数据都只能被输入为字符串
  2. 长度信息只能转成String数组后算
import java.io.*;
public class IOtempleByLine {
    private static String line;
    private static String[] parts;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
        while((line = br.readLine()) != null) {
            parts = line.split(" ");
            int len = parts.length;
            int[] arr = new int[len];
            for (int i = 0; i < len; i++) {
               arr[i] = Integer.valueOf(parts[i]);
            }
        }
    }
}