ACM模式中输入输出的处理
一、自己导包/写main函数/写输出
import java.util.*
public static void main(String[] args){System.out.println()
}
二、统一读取输入模板
import java.util.*; // 导入所有工具类(包括Scanner)public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in); // 只需初始化一次// 1. 读取单行字符串(类似Python的input())String line = sc.nextLine();// 2. 读取单个整数int num = sc.nextInt();// 3. 读取一行整数数组(类似Python的list(map(int, input().split())))int[] arr = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();sc.close(); // 关闭Scanner(非必须但建议)}
}
三、循环读取不确定数量的输入
使用 while(sc.hasNextLint())
四、坑点
若sc.nextInt和sc.nextLine()混用 , 必须使用sc.nextLine()来手动换行 ,原因如下:
nextInt()
会自动跳过所有空白符(包括换行符),直到找到下一个整数。- 连续使用
nextInt()
时,换行符会被自动忽略,无需手动处理。 - 但当
nextInt()
后需要立即读取字符串(如nextLine()
) 时,必须显式清除残留的换行符!
int num = sc.nextInt();
sc.nextLine(); // 清除换行符
String s = sc.nextLine(); // 正常读取下一行