1 前言
上一次用到Scanner处理输入输出已经是好久之前的事了,刷的leetcode题也是在方法内写逻辑,然后笔试需要用到Scanner,没处理好亏了很多,这篇就写一下Scanner的两个主要方法。
2 next() 和 nextLine()
next()方法取到空格或换行符为止,取出来的结果会自动去掉前后的空格,取完后光标会停留在当前行。
nextLine()方法会从当前光标取到本行的结尾处,遇到换行符停止,取出来的结果包含空格,取完后光标会停留在下一行的行首。
3 例子
输入为以下数据
1
10
open des
open asd
open jd
close asd
前两个数字使用nextInt()取出,nextInt()取完以后,光标留在第二行,想要使用nextLine()读取一整行的话,需要先执行一次nextLine()使光标移至第三行行首。
代码如下
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int a=scanner.nextInt();
for(int i=0;i<a;i++) {
int b=scanner.nextInt();
scanner.nextLine();//nextInt不会换行,需要先把光标移到下一行行首
for(int j=0;j<methods;j++) {
System.out.println(scanner.nextLine());
}
}
}
}
运行结果
4 结语
用Scanner时如果出错了,仔细分析一下光标走到哪了,问题可能就解决了。