OJ平台(牛客等)中Java的输入方法

之前做题主要是在leetcode里做的,在leetcode平台,做题的时候只需要完成所给的函数,使用时,输入为函数输入的形参,输出为程序的返回值。而在牛客网上的题目,包括一些竞赛时的题目,型式为输入的是从控制台键入的几行数据,而输出是直接将结果打印到控制台,因此,这里将所遇到的输入的格式即对应的代码放在这里。

基本格式及所需的库

在Java5中引入了Scanner库,这个库在日常使用中是非常方便的,可以直接将输入按照格式读取,但是,在牛客上经过笔者的测试,效率要比BufferedReader差很多,因此,在做题时推荐还是用BufferedReaderInputStreamReader来使用。

在这些平台,一般要求主类名为Main,然后将方法写到main()方法中,因此,我们的类大概是类似如下的格式:

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

public class Main {
    public static void main(String[] args) throws IOException{
    	......
    }
}

有一点要注意的是,由于在IO时所用的方法往往是有声明必检异常的,所以这里如果不想在代码中加入try-catch块的话,main()方法也要声明抛出’IOException`异常。

输入为一个字符串时

若输入为一个字符串,如:

abcd

相应的读取输入代码:

        // 创建一个BufferedReader对象
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 读取字符串
        String line = br.readLine();

        // 测试输入是否正确
        System.out.println(line);

若输入为多个数字

若输入为多个数字,如下:

1 2

这个例子中有两个数字,则代码为:

        // 创建一个BufferedReader对象
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 读取第一行数据
        String line = br.readLine();
        // 将字符串根据空格进行分隔
        String[] strings = line.trim().split(" ");
        // 分别将其中的每个数值读出
        int n = Integer.parseInt(strings[0]);
        int v = Integer.parseInt(strings[1]);

        // 测试输入是否正确
        System.out.println("n: " + n + "\tv: " + v);

若输入中有一个数组,且有数组的长度

一种常见的输入方式为,给出数行数据,其中一行为数组,而在前面某一行中,会有一个数据为其数组的位数。如:

7 6
1 2 3 4 5 6 7

其中第二行为一个数组,第一行的第一个数字表示第二行数组的长度,则读取输入的代码为:

        // 创建一个BufferedReader对象
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 读取第一行数据
        String line = br.readLine();
        // 将字符串根据空格进行分隔
        String[] strings = line.trim().split(" ");
        // 分别将其中的每个数值读出
        int n = Integer.parseInt(strings[0]);
        int v = Integer.parseInt(strings[1]);
        // 读取第二行数据
        line = br.readLine();
        strings = line.trim().split(" ");
        // 创建一个int型的数组用来储存第二行的多个数字
        int[] nums = new int[n];
        for (int i = 0; i < n; i ++) {
            nums[i] = Integer.parseInt(strings[i]);
        }

        // 测试输入是否正确
        for (int num: nums) {
            System.out.print(num + " ");
        }
posted @ 2019-06-03 19:08  点点爱梦  阅读(1386)  评论(0编辑  收藏  举报