本文共 5067 字,大约阅读时间需要 16 分钟。
Scanner是Java提供的一个功能强大的工具类,用于处理输入流。它不仅可以从标准输入读取数据,还可以处理不同的数据类型,提升了Java程序的输入处理效率。以下是关于Scanner类的详细说明和应用实例。
Scanner类也是Java的ITH层次上提供的一个强大工具。它能够简化从标准输入(System.in)读取不同类型数据的过程,与C语言中的scanf函数类似,但功能更为强大和灵活。在编程中,Scanner类常用于批量读取或解析输入数据,适用于多种形式的输入处理需求。
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
read()方法:这个方法覆盖了一个字符的读取。如果要读取多个字符,可以连续调用,但可能更常用的是:
readLine()方法:读取一行输入,包括换行符前后的空白字符。默认情况下,返回一个字符串,包括换行符。
对于不同类型的数据,Scanner依次提供以下方法:
以下是一个将输入转换为整数的完整示例:
import java.util.Scanner;public class ScannerDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个整数:"); while (true) { try { int num = scanner.nextInt(); System.out.println("你输入的数字是:" + num); break; } catch (java.util.InputMismatchException e) { System.out.println("输入错误,请重新输入整数。"); } } scanner.close(); }}
以下是一个读取字符串的示例:
import java.util.Scanner;public class ScannerString { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个字符串:"); while (true) { try { String str = scanner.nextLine(); System.out.println("你输入的字符串是:" + str); break; } catch (java.util.InputMismatchException e) { System.out.println("输入错误,请重新输入字符串。"); } } scanner.close(); }}
配置扫描规则:
有时,你可能需要根据需要自定义如何处理输入。例如,读取一个多个数字组成的字符串,而不是单独的数字。可以使用Scanner的scan
方法来实现更细小的解析控制:
import java.util.Scanner;public class CustomScanner { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入数字,例如:123, 456, 789:"); while (true) { try { String input = scanner.nextLine(); // 当然,这只是一个示例,可能需要更多的处理逻辑。 int firstDigit = Integer.parseInt(input.substring(0, 1)); System.out.println("你输入的第一个数字是:" + firstDigit); // 假设你想阅读多个数字 break; } catch (java.util.InputMismatchException e) { System.out.println("输入错误,请重写清晰的数字字符串。"); } } scanner.close(); }}
有时候,读取用户输入后需要根据输入内容进行不同的处理。这可以通过封装条件判断实现:
import java.util.Scanner;public class MultiScanner { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入你的身份:学生、教师还是游客?"); while (true) { String role = scanner.nextLine().trim(); switch (role) { case "学生": System.out.println("你希望获得哪个课程呢?"); String course = scanner.nextLine().trim(); System.out.println("感谢您选择我们的" + course + "课程!"); break; case "教师": System.out.println("欢迎加入我们教师团队!"); break; case "游客": System.out.println("有什么可以帮助您的吗?"); break; default: System.out.println("请确认您是学生、教师还是游客。"); } } scanner.close(); }}
scanner-use-delimiter
方法:import java.util.Scanner;public class BatchScan { public static void main(String[] args) { System.out.println("请输入多行输入,按回车结束:"); Listinputs = new ArrayList<>(); scanner.useDelimiter("\n"); while (scanner.hasNext()) { inputs.add(scanner.nextLine()); } scanner.close(); System.out.println("你输入的所有内容: " + String.join("\n", inputs)); }}
import java.util.Scanner;public class EncodingDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in, StandardCharsets.CHARSET_ISO_8859_15); System.out.println("输入的字符编码是什么?"); while (true) { try { String input = scanner.nextLine(); System.out.println("你输入的是:" + input); break; } catch (java.util.InputMismatchException e) { System.out.println("输入错误,请重新输入; } } scanner.close(); }}
通过以上实例,我们可以看到,Scanner类在Java编程中的强大功能和灵活性。它不仅可以读取文本数据,还可以读取多种数据类型,适用于不同的输入需求。尤其是在需要处理多种情况或批量读取输入的场合,Scanner类是一个非常有价值的工具。
转载地址:http://elwgz.baihongyu.com/