Java中使用Scanner函数的示例
Scanner是Java中常用的输入类,用于输入数据,可以从控制台、文件、字符串等多种渠道读取数据。Scanner的灵活性和易用性使其成为Java中非常重要的输入类。本文将对Scanner的使用方法进行详细讲解。
一、Scanner的构造方法
Scanner有多种构造方法,其中最常用的是Scanner(File source)、Scanner(InputStream source)、Scanner(String source)和Scanner(Readable source)。这些构造方法分别用于读取文件、读取输入流、读取字符串和读取可读对象。下面分别介绍构造方法的使用方法。
1. Scanner(File source)
Scanner(File source)构造方法用于读取指定文件的内容,接收File类型的参数。以下是Scanner读取文件的示例代码:
File file = new File("test.txt");
Scanner scanner = new Scanner(file);
此时Scanner对象已经准备好从test.txt文件中获取内容。该示例假设test.txt文件在程序所在的工作目录下,如果test.txt文件不存在,则会抛出FileNotFoundException异常。
2. Scanner(InputStream source)
Scanner(InputStream source)构造方法用于读取输入流,接收InputStream类型的参数。以下是Scanner读取输入流的示例代码:
InputStream in = System.in; Scanner scanner = new Scanner(in);
当我们使用System.in作为InputStream类型的参数时,Scanner对象将会从控制台读取输入内容。该示例的Scanner对象已经准备好从控制台中获取输入内容。
3. Scanner(String source)
Scanner(String source)构造方法用于读取字符串,接收String类型的参数。以下是Scanner读取字符串的示例代码:
String str = "Hello World!"; Scanner scanner = new Scanner(str);
此时Scanner对象已经准备好从"E"字符开始获取输入内容。该示例将Scanner对象设置为读取字符串Hello World!,并从字符串的开头读取数据。
4. Scanner(Readable source)
Scanner(Readable source)构造方法用于读取可读对象,接收Readable类型的参数。下面是Scanner读取可读对象的示例代码:
Readable readable = new BufferedReader(new FileReader("test.txt"));
Scanner scanner = new Scanner(readable);
使用Scanner的这种方式,可以让Scanner读取任何实现了Readable接口的对象的内容。在上例中,Scanner将读取test.txt文件的内容,并且每次读取的内容会被包装成BufferedReader类型,并传递给Scanner进行处理。
二、Scanner的常用方法
Scanner的常用方法包括next()、nextLine()、nextInt()、nextDouble()等,这些方法用于从输入源中读取数据,并以不同的数据类型进行返回。下面将对Scanner的常用方法进行详细介绍。
1. next()
Scanner.next()用于读取控制台输入源中的下一个单词,它会自动忽略输入源中的空格。下面是Scanner.next()的示例代码:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入单词:");
String word = scanner.next();
System.out.println("您输入的单词是:" + word);
该示例将读取控制台输入源中的下一个单词,并将读取的单词输出到控制台。
2.nextLine()
Scanner.nextLine()用于读取控制台输入源中的下一行,它会自动忽略输入源中的空白字符。下面是Scanner.nextLine()的示例代码:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一行话:");
String line = scanner.nextLine();
System.out.println("您输入的话是:" + line);
该示例将读取控制台输入源中的下一行,并将读取的内容输出到控制台。如果输入源中有多个空白字符,则会全部读取出来(包括换行符)。
3. nextInt()
Scanner.nextInt()用于读取控制台输入源中的下一个整数,并以int类型进行返回。下面是Scanner.nextInt()的示例代码:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int number = scanner.nextInt();
System.out.println("您输入的整数是:" + number);
该示例将读取控制台输入源中的下一个整数,并将读取的整数输出到控制台。如果读取的数据不是一个整数,则会抛出InputMismatchException异常。
4. nextDouble()
Scanner.nextDouble()用于读取控制台输入源中的下一个浮点数,并以double类型进行返回。下面是Scanner.nextDouble()的示例代码:
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个浮点数:");
double number = scanner.nextDouble();
System.out.println("您输入的浮点数是:" + number);
该示例将读取控制台输入源中的下一个浮点数,并将读取的浮点数输出到控制台。如果读取的数据不是一个浮点数,则会抛出InputMismatchException异常。
三、Scanner的常用用法
Scanner虽然有很多的构造方法和函数,但我们在实际中使用时有些常用的技巧是需要注意的。下面介绍Scanner的常用用法。
1. 在读取完Integer、Double等类型后,要用Scanner.nextLine()来消除换行符。
在读取int或double类型的变量时,不会读取回车符或换行符,但nextLine()会读取回车符或换行符。如果要读取包含回车符或换行符的一整行,需要先使用nextLine()读取回车符或换行符,同时也可以读取其它的内容。
2. 使用Scanner.next()或Scanner.nextLine()读取字符串时,要注意输入源中的空格和回车符。
当读取字符串时,如果想包含空格来读取字符串的话,需要使用Scanner.nextLine()方法。如果使用Scanner.next()方法的话,则空格会被视为相邻两个单词的间隔。此外,Scanner.nextLine()也会读取输入源中的回车符或者换行符。
3. 使用Scanner源码中的useDelimiter()方法可以改变默认的分隔符。
在默认状态下,Scanner从输入源中读取数据时使用的分隔符是空格符。但使用useDelimiter()方法可以改变默认的分隔符,从而让Scanner使用不同的分隔符来读取数据,该方法接收一个正则表达式作为参数。
4. 使用Scanner.hasNext()方法判断输入源中是否还有数据。
Scanner.hasNext()方法会判断输入源中是否还有待读取的数据,如果还有则返回true,否则返回false。可以通过这种方式判断是否需要继续读取输入源中的数据。
五、总结
本文介绍了Scanner的构造方法、常用方法以及常用用法,其中Scanner有多种构造方法可用于读取不同类型的输入源,构造方法非常灵活。Scanner的常用方法包括next()、nextLine()、nextInt()、nextDouble()等,它们可以根据需要获取不同类型的数据。此外,Scanner的常用用法在实际使用时也十分常见,包括消除换行符、注意空格和回车符、改变分隔符和判断是否还有数据等。Scanner的使用方法在Java开发中非常常见,掌握它的基本用法对于日常开发十分重要。
