在Java开发中,我们常常需要接受用户的输入,以此来处理各种业务场景。而Scanner是一种很常用的实现输入操作的工具。本文将从多个方面介绍如何使用Java Scanner实现输入操作。
一、Scanner概述
Scanner是一个便捷的类,可以用于读取用户的输入,同时还可以进行各种数据类型的转换,例如字符串、数字、布尔值等。在使用Scanner时,我们需要导入 java.util.Scanner 包。
Scanner的常用方法有:
Scanner sc = new Scanner(System.in); String str = sc.nextLine(); // 读取字符串 int i = sc.nextInt(); // 读取整型 double d = sc.nextDouble(); // 读取双精度浮点型 boolean b = sc.nextBoolean(); // 读取布尔型
通过这些方法,我们可以轻松实现用户输入的获取和处理。
二、读取字符串
使用Scanner读取字符串非常简单,可以使用 next() 或 nextLine() 方法来获取。next() 方法只能获取下一个以空格分隔的单词,而 nextLine() 方法则可以获取整行字符串。
Scanner sc = new Scanner(System.in); String str1 = sc.next(); // 读取一个单词 String str2 = sc.nextLine(); // 读取一行字符串
需要注意的是,如果在读取完其他数据类型后再读取字符串时,需要先调用一次 nextLine(),否则会出现异常。
Scanner sc = new Scanner(System.in); int i = sc.nextInt(); sc.nextLine(); // 读取多余的回车符 String str = sc.nextLine();
三、读取数值类型
Scanner同样可以读取各种数值类型,例如整数、浮点数等。读取整数可以使用 nextInt() 方法,读取其他数值类型时同理。
Scanner sc = new Scanner(System.in); int i = sc.nextInt(); // 读取一个整数 double d = sc.nextDouble(); // 读取一个双精度浮点数
需要注意的是,如果Scanner读取到的不是数值类型,而我们却使用了相应的方法来读取,会出现 InputMismatchException 异常。此时需要使用 hasNextInt() 等方法进行判断,以避免程序崩溃。
Scanner sc = new Scanner(System.in); if (sc.hasNextInt()) { int i = sc.nextInt(); } else { System.out.println("请输入整数!"); }
四、读取布尔类型
当我们需要读取一个布尔类型时,可以使用 nextBoolean() 方法。
Scanner sc = new Scanner(System.in); boolean b = sc.nextBoolean();
需要注意的是,当输入错误时,会出现 NoSuchElementException 异常。此时可以使用 hasNextBoolean() 方法进行判断。
Scanner sc = new Scanner(System.in); if (sc.hasNextBoolean()) { boolean b = sc.nextBoolean(); } else { System.out.println("请输入 true 或 false!"); }
五、Scanner关闭
在使用完Scanner后,我们需要手动关闭它。如果不关闭,可能会造成内存泄漏和资源浪费等问题。
Scanner sc = new Scanner(System.in); // 读取数据 sc.close(); // 关闭Scanner
六、总结
Scanner是一种常用的Java工具类,可以方便地实现用户输入的获取和处理。通过本文的介绍,读者可以了解到Scanner的基本用法,并可以灵活运用到各种业务场景中。