前言
java.util.Scanner在OJ中是很重要的存在。特地过来学习学习。
用法示例1
public class Main1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);//生成Scanner对象
while (sc.hasNextInt()) {
int a = sc.nextInt(); //读下一个整型字符串
int b = sc.nextInt();
System.out.println(a + b);
}
}
}输入输出:
第一组
4 7 3 4 打印结果是: 11 7
第二组
4 7 11 //在输入4,回车,7之后会直接打印11 5 6 11 //同样,这里直接打印出11
可以看到,无论是空格还是回车,都可以分割开,并且读到对应整型数据。只不过第二组在每读到两个数据,就进行了运算。这也说明Scanner在处理字符串对象的时候,以空格或者回车换行符作为分隔都是可以的。
用法示例2
- hasNext() 是检测 还有没有下一个输入,遇到回车才停止判断。
- next()是指针移动到当前下标,并取出下一个输入
public class Solution {
public static void main(String[] args)
{
System.out.println("请输入若干单词,以空格作为分隔");
Scanner sc = new Scanner(System.in);
while(!sc.hasNext("#")) //匹配#返回true
{
System.out.println("键盘输入的内容是:"+ sc.next());
}
System.out.println("会执行的");
}
}测试1
请输入若干单词,以空格作为分隔 abc def# 键盘输入的内容是:abc 键盘输入的内容是:def#
测试2
请输入若干单词,以空格作为分隔 123 efe dg # 键盘输入的内容是:123 键盘输入的内容是:efe 键盘输入的内容是:dg 会执行的
可以看到,#在第一次测试中被读取到了。
用法示例3
public class Main1 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String [] s=sc.next().split(" ");
int sum=0;
for(int i=0;i<s.length;i++){
sum=sum+Integer.parseInt(s[i]);
}
System.out.println(sum);
}
}
}输出结果
4 5 6 4 5 6
用法示例4
用法示例3和4的区别
- next()不会读取字符前/后的空格/Tab键,只吸取字符,直到遇到空格/Tab键/回车截止读取
- nextLine()读取字符前后的空格/Tab键,回车键截止。这是因为这一行都要读,所以只要你不换行,就会读进来
下面代码将读取一行,并将这一行用空格分割开。
public class Solution {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNextLine()){
String [] s=sc.nextLine().split(" ");
int sum=0;
for(int i=0;i<s.length;i++){
sum=sum+Integer.parseInt(s[i]);
}
System.out.println(sum);
}
}
}运行结果
7 8 9 24 (输出24)
总结
- 上面简单学习了
hasNextInt和nextInt、hasNextLine和nextLine、以及hasNext和next。请尽量两两搭配使用。希望在笔试面试的时候能发挥作用。



京公网安备 11010502036488号