1. 易错IO知识点
1.1. next(),nextInt()与nextLine()的区别
先看一个输入输出实验:
原因:1
next()
与nextInt()
都是空格就读取完毕,它们不同在于一个返回String,一个只识别数字(否则报InputMismatchException
);
- 第一条中它们读取完之后
cursor
(光标)指向本行中元素读取后的下一位;
- 而
nextLine()
会读入空格,一直到\n
才读取完毕;
- 故它们一起使用时
nextLine()
会继续读取next()
或nextInt()
行中仍有的数据。
1.2. hasNext(),hasNextLine()与hasNextInt()的区别
hasNext()
在没有输入的时候等待输入(阻塞),在有输入的时候又因为没有使用它的重载函数hasNext(String pattern)
给于pattern
,所以会匹配任何输入而返回true
.
hasNextLine()
目前还不知道怎么让它以为没有下一行…
hasNextInt()
在有hasNext()
的基础上,还默认会判断是不是int
类型的数据,相当于自带判断是否是整数---^-?\\d+$
的pattern.
2. 经典IO场景
2.1. 输入知道有多少组
第一行是一个正整数T,表示有T组测试数据。
2.2. 一行输入的测试数据数量已知
每组数据第一个数为N(1⇐n⇐10000),紧接着有N个正整数(注意在一行)
2.3. 约定了结束标志,如”-1”
2.4. 没有约定结束标志
2.4.1. 读入一次输出一次
即在while中进行计算,在卡死前将所有结果输出。因为最后还需要hasNext()
的阻塞,所以不能替换成true
.
2.4.2. 利用空串作为结束标志-读取一行内的数据
2.4.3. 利用空串作为结束标志-一行一个
2.4.3.1. 输入不知道多少个—开最大的数组
最多输入n(1⇐n⇐10000)个整数,一行一个数字
2.4.3.2. 输入不知道多少个—使用List转数组
3. 业务IO场景
3.1. 读入json
3.2. 输出json
3.3. 由json对象信息返回url参数