直到Java 1.5从用户程序员那里读取数据之前,都依赖于字符流类和字节流类。
从Java 1.5开始引入Scanner类。此类接受File,InputStream,Path和String对象,使用正则表达式逐个令牌读取所有原始数据类型和String(从给定的源)令牌。
默认情况下,空格被视为定界符(将数据分成令牌)。
读取用来自源的各种数据类型nextXXX()由该类即提供的方法,nextInt(),nextShort(),nextFloat(),nextLong(),nextBigDecimal(),nextBigInteger(),nextLong(),nextShort(),nextDouble(),nextByte(),nextFloat(),next()。
将Scanner对象作为参数传递
您可以将Scanner对象作为参数传递给方法。
示例
以下Java程序演示了如何将Scanner对象传递给方法。该对象读取文件的内容。import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;
public class ScannerExample {
public String sampleMethod(Scanner sc){
StringBuffer sb = new StringBuffer();
while(sc.hasNext()) {
sb.append(sc.nextLine());
}
return sb.toString();
}
public static void main(String args[]) throws IOException {
//实例化inputStream类
InputStream stream = new FileInputStream("D:\\sample.txt");
//实例化Scanner类
Scanner sc = new Scanner(stream);
ScannerExample obj = new ScannerExample();
//调用方法
String result = obj.sampleMethod(sc);
System.out.println("文件内容:");
System.out.println(result);
}
}
输出结果文件内容:
nhooo.com originated from the idea that there exists a class of readers who respond better to on-line
content and prefer to learn new skills at their own pace from the comforts of their drawing rooms.
示例
在下面的示例中,我们创建一个具有标准输入(System.in)作为源的Scanner对象,并将其作为参数传递给方法。import java.io.IOException;
import java.util.Scanner;
public class ScannerExample {
public void sampleMethod(Scanner sc){
StringBuffer sb = new StringBuffer();
System.out.println("Enter your name: ");
String name = sc.next();
System.out.println("Enter your age: ");
String age = sc.next();
System.out.println("Hello "+name+" You are "+age+" years old");
}
public static void main(String args[]) throws IOException {
//实例化Scanner类
Scanner sc = new Scanner(System.in);
ScannerExample obj = new ScannerExample();
//调用方法
obj.sampleMethod(sc);
}
}
输出结果Enter your name:
Krishna
Enter your age:
25
Hello Krishna You are 25 years old