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 + " ");
            }
    
  • 相关阅读:
    HDU 1728 逃离迷宫
    程序猿求职之道(《程序猿面试笔试宝典》)之不想签约,但也不想轻易放弃机会,怎么办?
    职场生涯(—)
    Python学习笔记24:Django搭建简单的博客站点(二)
    &quot;高可用方案工具包&quot; high availability toolkit 1.1
    [Swift]LeetCode421. 数组中两个数的最大异或值 | Maximum XOR of Two Numbers in an Array
    [Swift]LeetCode420. 强密码检验器 | Strong Password Checker
    [Swift]LeetCode419. 甲板上的战舰 | Battleships in a Board
    [Swift]LeetCode417. 太平洋大西洋水流问题 | Pacific Atlantic Water Flow
    [Swift通天遁地]七、数据与安全-(11)如何检测应用程序中的内存泄露
  • 原文地址:https://www.cnblogs.com/liulaolaiu/p/11744394.html
Copyright © 2011-2022 走看看