Java Scanner类
-
创建
Scanner
对象的基本语法Scanner s = new Scanner(System.in);
-
通过Scanner类的
next()
与nextLine()
方法获取输入的字符串,在读取前一般需要使用hasNext
与hasNextLine
判断是够还有输入的数据// 使用next方法 import java.util.Scanner; public class ScannerDemo { public static void main(String[] args) { // 从键盘接收数据 Scanner scan = new Scanner(System.in); // next 方式接收字符串 System.out.println("next方式接收:"); // 判断是否还有输入 if(scan.hasNext()) { String str1 = scan.next(); System.out.println("输入的数据为:" + str1); } } } // 使用`nextLine`方法 import java.util.Scanner; public class ScannerDemo { public static void main(String[] args) { //从键盘接收数据 Scanner scan = new Scanner(System.in); // nextline 方式接收字符串 System.out.println("nextLine方式接收:"); // 判断是否还有输入 if(scan.hasNextLine()) { String str2 = scan.nextLine(); System.out.println("输入的数据为:" + str2); } } }
-
next()
与nextLine()
区别
next()
:
- 一定要读取到有效字符后才可以结束输入
- 对输入有效之前遇到的空白,
next()
方法会自动将其去掉 - 只有输入有效字符后才将其后面的空白作为分隔符或者结束符
next()
不能得到带有空格的字符串
nextLine()
:- 以Enter为结束符,
nextLine()
返回的是输入回车之前的所有字符 - 可以获得空白
-
Scanner支持输入int或float类型的数据,输入前使用
hasNextXxx()
方法进行验证,再使用nextXxx()
来读取import java.util.Scanner; public static ScannerDemo { public static void main(String[] args) { //从键盘接收数据 scanner scan = new Scanner(System.in); int i = 0; float f = 0.0f; System.out.print("输入整数:"); //判断输入的是否是整数 if(scan.hasNextInt()) { //接收整数 i = scan.nextInt(); System.out.println("整数数据:" + i); } else { // 输入错误信息 System.out.println("输入的不是整数!"); } System.out.print("输入小数:"); if(scan.hasNextFloat()) { // 判断输入的是否是小数 f = scan.nextFloat(); // 接收小数 System.out.println("小数数据:" + f); }else{ // 输入错误信息 System.out.println("输入的不是小数!"); } } }
-
输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
import java.util.Scanner; class ScannerDemo { public static void main(String[] args) { Scanner scan = new Scanner(System.in); double sum = 0; int m = 0; while(scan.hasNextDouble()) { double x = scan.nextDouble(); m = m + 1; sum = sum + x; } System.out.println(m + "个数的和为" + sum); System.out.println(m + "个数的平均值为" + (sum/m)); } }