笔试题 Java的输入输出 Scanner用法
一、 概述
第一次笔试的时候不太熟悉Java的输入输出,会写的题目也没有AC。复盘的时候打算把Java的输入输出搞清楚。
一般笔试题输入,会分成一下几种情况:
- 多行输入
- 每行参数个数不确定
- 每行参数个数确定
- 单行输入
- 输入输出量很大
下面的情况都是以Int
举例,其他数据类型换成相应的读入方法即可。
前两种情况是输入输出量很小的情况,用Scanner
一般不会超时,如果输入输出量很大的情况,Scanner
就会超时,这个时候用BufferedReader
和BufferedWriter
比较好。
二、单行输入
先来看最简单的单行输入
主要是通过nextInt()
不停地读入
- 第一个数表示数组总数,后面的数表示数组的各个值
8 7 8 3 4 2 4 5 0
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
// 牛客网推荐写法
int n = in.nextInt(); // 数组总数
int[] nums = new int[n]; // 创建数组
for(int i = 0; i < n; i++) {
nums[i] = in.nextInt(); // 读入数组元素
}
}
in.close();
}
}
三、多行输入
3.1 每行参数个数确定
这种情况也比较简单
以字节这次笔试的题目为例来讲
题目:
- 第一行是一个正整数N(2<=N<=1000),表示数组长度
- 第二行是N个数K1, K2, …, Kn 组成的环形数组,Kn 为0或1
也是通过 nextInt()
import java.util.Scanner;
public class ChooseSeat {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.ha