本文主要总结java.util.Scanner类的一些方法,比如next,hasNext,nextLine!
hasNext方法
因为后面要用到hasNext方法,所以先说这个,hasNext方法用于判断后续是否还有输入。
示例:
package ddd;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String str=sc.next();
System.out.println("输出:"+str);
}
}
}
如果不用hasNext()方法,该代码只能这样输入一次,后续不能再输入。
使用hasNext()方法之后:
可以不断的进行输入,相当于是一个输入的循环,如果还有输入,那么就再执行一次while里面的内容。
next方法
next方法表示从字符串的首位(非空格,非字符)开始扫描,遇到第一个分隔符(空格或者‘\n’)结束,它会把空格堪称字符串间隔。
示例:
package ddd;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String str=sc.next();
System.out.println("输出:"+str);
}
}
}
1.输入aaa bb
可以看到,这里把字符串看成了分隔符,只取了aaa。因为这里用到了hasNext,所以会输出两次,若不用,只输出aaa或者bb。
2.输入 aaa bb(注意前面有空格)
输入结果与上面相同。它忽略了首行的空格从字符开始扫描。
nextLine方法
把空格也当成字符串的一部分去扫描,知道遇到回车就停止扫描,示例如下
package ddd;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String str=sc.nextLine();
System.out.println("输出:"+str);
}
}
}
输入hello world和 dsad(前面有空格)
可以看到,它对空格没有进行处理,直接与字符串一起打印出来。这里要注意,我们输入hello world其实是hello world ‘\n’后面会认为有回车。
综上所述,引出来一个常见的编程题:
计算字符串最后一个单词的长度,单词以空格隔开。
输入:hello world
输出:5
package ddd;
import java.util.Scanner;
public class Main{
public static int lengthOfLast(String str) {
String[] s =str.split(" ");//用空格对字符串进行分割
return s[s.length-1].length();//返回数组最后一个字符串的长度
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);//获取输入数据
while(scan.hasNext()){
//查看是否还有输入,题目没要求的话这个不要也没关系
String str = scan.nextLine();//获取包含空格的字符串
System.out.println(lengthOfLast(str));//打印
}
}
}
ok啦,以上就是对Scanner类进行的一个讲解以及实例编程题,一般可以延申扩展,如果要求返回最后一个单词也是一样的,把数组长度换成值就可以,返回第一个单词同理。(本代码会对最后的空格不进行处理,就是就算最后一个单词后面还有空格也不会算入计数里)