Java--牛客网编程OJ的常用输入模板

本文介绍了在牛客网在线编程题中遇到的八种常见输入处理情况,包括已知大小的二维数组、多行测试数据、每行数量在行头给出、结果取模、数组组数未知等,并提供了相应的输入描述和样例。适用于Java程序员进行在线编程训练。

目录

一:输入是已知大小的二维数组

二:输入的每组测试数据有多行的情况

三:每行测试数据的数量在该行行头给出

四:测试结果未知且需要取模的情况

五:测试数组组数未知且结果需要取模的情况

六:判断子串是否与子串的某段相等

七:不知道输入有多少行情况下,求每行之和

八:已知有n组,每组有两个数据进行处理

在线训练网站:


一:输入是已知大小的二维数组

输入描述:输入描述第一行是一个正整数n,表示二维数组有n行n列

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int[][] arr = new int[n][n];
        for(int i =0; i<n; i++){
            for(int j =0; j< n; j++){
               arr[i][j] = sc.nextInt();
            }
        }
    }
}

输入描述:输入的第一行两个整数m, n分别对应二维数组的行和列

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int m = scan.nextInt();
        int n = scan.nextInt();
        int[][] arr = new int[m][n];
        for(int i=0;i<m;i++){
            for(int j =0;j<n;j++){
                arr[i][j] = scan.nextInt();
            }
        }
    }
}

二:输入的每组测试数据有多行的情况

输入描述:第一行是一个正整数T,表示有T组测试数据。接下来一行有两个整数,分别是m和n,

如何接下来m行,每行有n个整数。

输入样例

输入:
3
2 3
1 2 3
1 2 3
 2 4
4 3 2 1
1 1 1 1
2 2
1 2
10 20
输出:
7
4
30

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int T = scan.nextInt();
        while(T > 0){
            T--;
            int m = scan.nextInt();
            int n = scan.nextInt();
            int[][] arr = new int[m][n];
            for(int i =0;i<m;i++){
                arr[i][j] = scan.nextInt();
            }
            // 进行处理和输出
        }
    }
    
}

 

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner  sc = new Scanner(System.in);
        int t = sc.nextInt();
        while(t>0){
            t--;
            while(sc.hasNext()){
            int n = sc.nextInt();
            if(n ==0) break;
            int[] arr = new int[n];
            int sum =0;
            for(int i=0;i<n;i++){
                arr[i] = sc.nextInt();
                sum+=arr[i];
            }
            System.out.println(sum);
        }
      }
    }
}

三:每行测试数据的数量在该行行头给出

输入描述:第一行是一个正整数T,表示有T组测试数据。之后每组数据第一个数为N(1 <= n<=10000),紧接着有N个数;(都在同一行) 

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int t = scanner.nextInt();
        for(int i =0;i<t;i++){
            int n = scan.nextInt();
            String s = scan.next();  //注意用的是next(),不换行
            char[] ch = new char[10000];
            for(int j =0; j<N;j++){
                ch[j] = s.charAt(j)
            }
        }
    }
}

(代码有待考证)

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner  sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            if(n ==0) break;
            int[] arr = new int[n];
            int sum =0;
            for(int i=0;i<n;i++){
                arr[i] = sc.nextInt();
                sum+=arr[i];
            }
            System.out.println(sum);
        }
    }
}

 

四:测试结果未知且需要取模的情况

输入描述:每行输入两个数,分别为N和L,直到N和L为某个特殊取值为止止;结果对10000000007取模

import java.util.*;
 
public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        Long mod = 10000000007;
        while(input.hasNext()){
            {
                 Long n = scan.nextLong();
                 Long l = scan.nextLong();
                 if(n == 0  && l ==0){
                    break;
                 }
                 
             }
        }
    }
}

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner  sc = new Scanner(System.in);
        while(sc.hasNext()){
            int a = sc.nextInt();
            int b = sc.nextInt();
            if(a == 0 && b ==0){
                break;
            }
            System.out.println(a+b);
        }
    }
}

 

五:测试数组组数未知且结果需要取模的情况

输入描述:

输入数据有多组,每行表示一组输入数据。

每行不定有n个整数,空格隔开。

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()){
            String[] s = scan.nextLine().split(" ");
            int sum =0;
            for(int i =0; i<s.length();i++){
                sum+=Integer.paarseInt(s[i]);
            }
        }
    }
}

六:判断子串是否与子串的某段相等

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        String mainString = scan.nextLine();
        String subString = scan.nextLine();
    }
}

七:不知道输入有多少行情况下,求每行之和

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        while(scan.hasNext()){
            int a = scan.nextInt();
            int b = scan.nextInt();
            System.out.println(a+b);
        }
    }
}

八:已知有n组,每组有两个数据进行处理

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int t = scan.nextInt();
        for(int i =0;i<t;i++){
            int a = scan.nextInt();
            int b = scan.nextInt();
            System.out.println(a+b);
        }
    }
}

在线训练网站:

https://ac.nowcoder.com/acm/contest/5652

参考:

https://blog.csdn.net/smile001isme/article/details/105470699

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值