简单小结一下,java网上笔试的时候OJ的一些要求的实例
因为踩过坑,所以特别整理了一下
java 输入输出总结(牛客、笔试、机试) - 图1

1 单行输入

java 输入输出总结(牛客、笔试、机试) - 图2
java 输入输出总结(牛客、笔试、机试) - 图3

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

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

2 多行输入

例子1

java 输入输出总结(牛客、笔试、机试) - 图4
java 输入输出总结(牛客、笔试、机试) - 图5

  1. // 本题为考试多行输入输出规范示例,无需提交,不计分。
  2. import java.util.Scanner;
  3. public class Main {
  4. public static void main(String[] args) {
  5. Scanner sc = new Scanner(System.in);
  6. int n = sc.nextInt();
  7. int ans = 0, x;
  8. for(int i = 0; i < n; i++){
  9. for(int j = 0; j < n; j++){
  10. x = sc.nextInt();
  11. ans += x;
  12. }
  13. }
  14. System.out.println(ans);
  15. }
  16. }

例子2

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

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

  1. publicstaticvoidmain(String[] args) {
  2. Scanner sc = newScanner(System.in);
  3. String str = sc.nextLine().toString();
  4. int[] dis = getIntArr(str);
  5. str = sc.nextLine().toString();
  6. int[] eng = getIntArr(str);
  7. int maxDis = sc.nextInt();
  8. }
  9. static int[] getIntArr(String str){
  10. String[] arr = str.split(" ");
  11. int[] b = new int[arr.length];
  12. for(int j = 0; j<b.length;j++) {
  13. b[j] = Integer.parseInt(arr[j]);
  14. }
  15. return b;
  16. }

例子3

//输入描述:
//输入包括2行:
//第一行为整数n(1 <= n <= 50),即抹除一个数之后剩下的数字个数
//第二行为n个整数num[i] (1 <= num[i] <= 1000000000)

  1. import java.util.*;
  2. public class Next {
  3. public static void main(String[] args) {
  4. Scanner sc=new Scanner(System.in);
  5. int N=sc.nextInt();
  6. int[] num = new int[N];
  7. for (int i = 0; i < N; i++) {
  8. num[i] = sc.nextInt();
  9. }
  10. //System.out.println("hallo");
  11. }
  12. }
  1. import java.util.*;
  2. public class Main{
  3. public static void main(String[] args) {
  4. Scanner sc = new Scanner(System.in);
  5. String str = sc.nextLine();
  6. char[] arr = str.toCharArray();
  7. }
  8. }

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

例子4

输入描述:
输入包括n+1行:
第一行为单词个数n(1 ≤ n ≤ 50)
接下来的n行,每行一个单词word[i],长度length(1 ≤ length ≤ 50)。由小写字母构成
输出描述:

输出循环单词的种数

  1. 输入例子:
  2. 5
  3. picture
  4. turepic
  5. icturep
  6. word
  7. ordw
  8. 输出例子:
  9. 2
  1. package string.test;
  2. import java.util.Scanner;
  3. public class Demo1 {
  4. private int N;
  5. private String[] arr;
  6. private int count;
  7. public static void main(String[] args) {
  8. Demo1 demo = new Demo1();
  9. Scanner sc = new Scanner(System.in);
  10. demo.N = sc.nextInt();
  11. demo.arr = new String[demo.N];
  12. for (int i = 0; i < demo.N; i++) {
  13. String str = sc.next();
  14. demo.solve(str);
  15. }
  16. System.out.println(demo.count);
  17. for (int i = 0; i < demo.count; i++) {
  18. System.out.println(demo.arr[i]);
  19. }
  20. sc.close();
  21. }
  22. private void solve(String str) {
  23. if (count == 0) {
  24. arr[0] = str + str;
  25. count++;
  26. return;
  27. }
  28. boolean flag = false;
  29. int num = count;
  30. for (int i = 0; i < num; i++) {
  31. //如果包含该单词,吧flag设置成ture,循环结束要记得把flag重新设置成false
  32. if (judge(arr[i], str)) {
  33. flag = true;
  34. break;
  35. }
  36. }
  37. if (flag != true) {
  38. arr[count++] = str + str;
  39. }
  40. flag = false;
  41. }
  42. /*
  43. * 如果str1包含str2.则返回true
  44. */
  45. private boolean judge(String str1, String str2) {
  46. if (str1.length() == str2.length())
  47. return false;
  48. //这里必须要验证str2是否为str1的一半,否则会无法通过
  49. if (str1.contains(str2) && str1.length() == str2.length() * 2)
  50. return true;
  51. return false;
  52. }
  53. }


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

参考文章:

1.JS和java在牛客编程题上输入输出的总结
2.【牛客机试】标准输入输出格式
3.牛客网输入输出(Java)总结