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字符。
}
}