ACM模式细节

牛客网的ACM模式需要自己写输入输出,在这里简单记录一下:

基本答题框架:

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
		// ...
        sc.close();
    }
}

常见的输入形式:

next()、nextLine()、nextInt()、nextFloat()、nextDouble();

对于数字类型的输入比较好懂,有坑的是 next()nextLine()

Q: next()nextLine()有什么区别?

A:

  • next() 会自动消掉有效字符前的空格,只返回输入的字符,不能得到带空格的字符串;
  • next()在输入有效字符之后,将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符;
  • nextLine() 方法返回的是 Enter 键之前的所有字符,它是可以得到带空格的字符串的;
  • nextLine()的结束符只有 Enter 键;

注意点:

在每一个 next()、nextDouble() 、nextFloat()、nextInt() 等语句之后加一个 nextLine() 语句,将被 next() 去掉的Enter结束符过滤掉。

举个例子🌰:

import java.util.*;
/*
用例输入:
    1
    2
    a b c
*/
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
       	int num1 = sc.nextInt();
       	int nums2 = sc.nextInt();
       	sc.nextLine(); //	容易漏掉,不加这一句,输入完2,程序直接往下走了,下一句字符串跳过了
       	String a_b_c = sc.nextLine();
       	//	这样才能读取到正确的内容。
       	//	不加sc.nextLine()的话,a_b_c是一个Enter字符。
    }
}
posted @ 2022-08-18 11:24  阿飞的客栈  阅读(976)  评论(0编辑  收藏  举报