输入方式一借助Scanner函数输入数据量少推荐使用若是数据是固定的就几个推荐使用Scanner因为比较方便可以直接使用nextInt()得到指定类型的值。输入格式 共一行包含四个整数 n,s,a,b含义如前面所述。分析类似于这种固定几个数字的我们就可以使用Scanner来直接得到值。import java.util.*; class Main { public static void main(String[] args) { Scanner cin new Scanner(System.in); n cin.nextInt(); s cin.nextInt(); a cin.nextInt(); b cin.nextInt(); } }方式二使用BufferedReader函数输入数据量大推荐使用效率更高推荐使用Integer.parseInt来进行转int类型数据。题库输入描述 第一行是一个整数T代表一共有多少组数据。 接下来是T组数据。 每组数据的第一行是两个整数分别代表花生苗的行数R和列数 C。 每组数据的接下来R行数据从北向南依次描述每行花生苗的情况。每行数据有C个整数按从西向东的顺序描述了该行每株花生苗上的花生数目M。 输入举例 2 2 2 1 1 3 4 2 3 2 3 4 1 6 5 ————————————————分析对于这类不是固定的数据长度可能会根据T组会有很大很大的读入操作此时更推荐使用BufferedReader而不是ScannerBufferedReader适用于所有输入场景。最佳选择如下输入数据量很小一般确定几个值选择使用Scanner可以直接接收指定类型数据方便。数据数据量由N决定不确定长度或者数量特别多就选择使用BufferedReader。输出方式一采用System.out.printf()输出数据量少可使用输出样例 Fib(0) 0 Fib(4) 3 Fib(2) 1有些使用输出不仅仅让我们输出结果可能会让我们输出相应的结果式子一般使用的System.out.printf()以及System.out.println()System.out.printf() //这个printf跟c语言的效果一致如printf(%d, 123) System.out.println() //使用这个println()就不能写表达式了输出后会自带一个\n根据样例来编写代码class Main { public static void main(String[] args) { System.out.printf(Fib(%d) %d\n, 0, 0); //下面两条等价于 System.out.printf(Fib(%d) %d\n, 4, 3); System.out.printf(Fib(%d) %d, 4, 3); System.out.println(); System.out.printf(Fib(%d) %d\n, 2, 1); } }方式二采用PrintWriter输出数据量大推荐使用注意在进行printf等其他输出函数后(可多条)最终一定要执行flush才能够打印到控制台上。class Main { public static void main(String[] args) { PrintWriter out new PrintWriter(new BufferedOutputStream(System.out)); out.printf(%d\n, 123); out.flush();//刷新流 } }for (int i 0; i n; i) { //上面声明static PrintWriter out new PrintWriter(new BufferedOutputStream(System.out)); //效率由高到低比较 //[PrintWriter].println() [PrintWriter].printf() System.out.println() System.out.printf() //经过测试out.println(index[i]); 比 out.printf(%d\n, index[i])效率更高后者在该题中也会超时。 out.println(index[i]); } out.flush();详细可见长路——算法竞赛Java选手的语言快速熟悉指南