zoukankan      html  css  js  c++  java
  • 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 + "	v: " + 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 + " ");
            }
    
  • 相关阅读:
    .net5访问共享目录
    SqlServer 查询数据库表结构
    SqlServer查询所有表结构信息
    sqlserver 清掉工件号重复的数据
    产生18位的随机数作为bigint
    sql多表联合修改
    sp_addlinkedserver在存储过程中使用
    sqlserver 中随机取数据
    Winform选择目录路径与选择文件路径
    WinFrom 右下角弹出提示框
  • 原文地址:https://www.cnblogs.com/liulaolaiu/p/11744394.html
Copyright © 2011-2022 走看看