Scanner类
Scanner类
使用场景1:
检测用户在终端的输入
Scanner scanner = new Scanner(System.in);
方法
hasNext():boolean 如果用户还有输入,返回true,否则返回false;调用hashNext()方法时会阻塞线程,只有当用户输入后按下回车线程才会继续。
使用hasNext()方法,就像在问用户,你还要输入点什么?hasNext()方法只能返回true。当用户还没有输入内容时或者内容已经被next()拿完了,返回false;当用户输入内容或者next()没有把用户输入的内容全部拿完时,返回true;返回为false时,线程阻塞,等待用户输入,就像在问用户,你还要再输入点啥呢?这样就有一个问题了,程序如何结束?其实,其实,你可以输入特定内容,然后使用next()方法和内容做一个判断,如果相等就结束。如果用户已经输入内容而且没有使用nextXxx()方法把内容拿出来,hasNext()方法返回的一直都是true
使用下面的nextXxx()方法时,就是在把用户输入的内容一个一个拿出来,
next():String 返回用户输入的字符串
nextInt():int 返回int数据
nextDouble():double 返回double类型数据
nextXXX()…………
Scanner对象调用hasNext()方法经常和while循环一起使用,用户输入的内容一被拿完,就一直问你,你还要再输入点啥?
示例代码:
点击查看代码
Scanner scanner = new Scanner(System.in);
System.out.println("input something:");
//第一次问用户,你要输入点啥?之后用户输入
System.out.println(scanner.hasNext());
//后面调用两次hasNext()方法返回的都是true
scanner.hasNext();
System.out.println(scanner.hasNext());
//while循环中第一次调用hasNext()方法返回的和上面一样也是true
while(scanner.hasNext()){
try {
//调用next()方法将用户输入内容取出并返回,这里取出的是一个String,在用户输入时使用空格分割输入的字符串;如果之前用户输入了两个字符串及以上,那么下一次调用hasNext()方法返回的是true,因为一次next()
//方法没拿完,如果用户只输入了一个字符串,下次调用hasNext()方法返回false,并且询问用户”你还要输入点啥?“,用户输入了就返回true,不输入就一直线程阻塞下去。
//由于next()只能抓取字符串,当然你输入的内容都是字符串,但是数字内容可以转换成int、double……,所以这里使用try catch来捕捉异常
System.out.println(scanner.next());
}catch (Exception e){
System.out.println("exit!");
System.exit(0);
}
}