Scanner類常用的場景爲:1.控制檯輸入;2.字符串分割;3.文本整行讀取。
示例代碼如下:
package test.java.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;
/**
* Scanner類的常用方法彙總
* @author Lukas
*
*/
public class ScannerTest {
public static void main(String[] args) {
// consoleInput();
// splitString();
// readFileByLine();
}
/**
* 1:控制檯輸入輸出
*/
private static void consoleInput() {
Scanner in = new Scanner(System.in);
while(in.hasNext()){
Object input = in.nextLine();
System.out.println("input ==> " + input);
closeSacnner(in, input);
}
}
/**
* 2:按字符分割字符串(默認按照空格分隔)
*/
private static void splitString() {
String inputStr = "123 456,abc.def...張三|李四";
Scanner in = new Scanner(inputStr);
in.useDelimiter(" |,|\\.|\\|");
while(in.hasNext()){
String input = in.next();
System.out.println("input ==> " + input);
}
in.close();
}
/**
* 3:按行讀取文件
*/
private static void readFileByLine() {
InputStream is = null;
try {
is = new FileInputStream(new File("src/test/java/util/HelloWorld.java"));
Scanner in = new Scanner(is);
while(in.hasNextLine()){
String input = in.nextLine();
System.out.println("input ==> " + input);
}
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 關閉Scanner流
* @param in
* @param input
*/
private static void closeSacnner(Scanner in, Object input) {
if("bye".equalsIgnoreCase(input.toString())){
System.out.println("bye");
in.close();
System.exit(0);
}
}
}