java 输入输出总结(牛客、笔试、机试)

本文总结了Java在线评测(OJ)中常见的输入输出规范及技巧,包括单行多行输入处理、hasNext与hasNextLine的区别等,并通过具体示例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为踩过坑,所以特别整理了一下,发现其实不少小伙伴同样都是这样,特别简单小结一下,java网上笔试的时候OJ的一些要求的实例

img

1 单行输入

img

img

// 本题为考试单行多行输入输出规范示例,无需提交,不计分。
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {// 注意,如果输入是多个测试用例,请通过while循环处理多个测试用例
            int a = in.nextInt();
            int b = in.nextInt();
            System.out.println(a + b);
        }
    }

1.oj的java输入hasNext和hasNextLine区别

2 多行输入

例子1

img

img

// 本题为考试多行输入输出规范示例,无需提交,不计分。
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int ans = 0, x;
        for(int i = 0; i < n; i++){
            for(int j = 0; j < n; j++){
                x = sc.nextInt();
                ans += x;
            }
        } 
        System.out.println(ans);
    }
}

例子2

有个题输入的是两行数组和一个整数(整数在最后),但是没给每一行数组元素个数,

建议用java😂,nextLine()整行读取再切分

publicstaticvoidmain(String[] args) {
        Scanner sc = newScanner(System.in);
        String str = sc.nextLine().toString();
        int[] dis = getIntArr(str);
        str = sc.nextLine().toString();
        int[] eng = getIntArr(str);
        int maxDis = sc.nextInt();
    }
static int[] getIntArr(String str){
    String[] arr  = str.split(" ");
    int[] b = new int[arr.length];
    for(int j = 0; j<b.length;j++) {
    	b[j] = Integer.parseInt(arr[j]);
    }
    return b;
}

例子3

//输入描述:

//输入包括2行:

//第一行为整数n(1 <= n <= 50),即抹除一个数之后剩下的数字个数

//第二行为n个整数num[i] (1 <= num[i] <= 1000000000)

import java.util.*;
public class Next {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int N=sc.nextInt();
        int[] num = new int[N];
        for (int i = 0; i < N; i++) {
            num[i] = sc.nextInt();
        }
        //System.out.println("hallo");
    }
}
import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        char[] arr = str.toCharArray();
   }
}

JAVA中的char类型(八大基本数据类型之一)

例子4

输入描述:

输入包括n+1行:

第一行为单词个数n(1 ≤ n ≤ 50)

接下来的n行,每行一个单词word[i],长度length(1 ≤ length ≤ 50)。由小写字母构成

输出描述:

输出循环单词的种数

输入例子:
5
picture
turepic
icturep
word
ordw

输出例子:
2
package string.test;
import java.util.Scanner;
public class Demo1 {
    private int N;
    private String[] arr;
    private int count;
    public static void main(String[] args) {
        Demo1 demo = new Demo1();
        Scanner sc = new Scanner(System.in);
        demo.N = sc.nextInt();
        demo.arr = new String[demo.N];
        for (int i = 0; i < demo.N; i++) {
            String str = sc.next();
            demo.solve(str);
        }
        System.out.println(demo.count);
        for (int i = 0; i < demo.count; i++) {
            System.out.println(demo.arr[i]);
        }
        sc.close();
    }
    private void solve(String str) {
        if (count == 0) {
            arr[0] = str + str;
            count++;
            return;
        }
        boolean flag = false;
        int num = count;
        for (int i = 0; i < num; i++) {
            //如果包含该单词,吧flag设置成ture,循环结束要记得把flag重新设置成false
            if (judge(arr[i], str)) {
                flag = true;
                break;
            }
        }
        if (flag != true) {
            arr[count++] = str + str;
 
        }
        flag = false;
    }
    /*
     * 如果str1包含str2.则返回true
     */
    private boolean judge(String str1, String str2) {
        if (str1.length() == str2.length())
            return false;
        //这里必须要验证str2是否为str1的一半,否则会无法通过
        if (str1.contains(str2) && str1.length() == str2.length() * 2)
            return true;
        return false;
    }
}

————————————————

参考文章:

1.JS和java在牛客编程题上输入输出的总结

2.【牛客机试】标准输入输出格式

3.牛客网输入输出(Java)总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是我,Zack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值