java之Scanner詳解
阿新 • • 發佈:2019-01-24
刷題過程中遇到資料的讀入掃描,發現網上資料比較雜,總結下。
1.包:
import java.util.Scanner
2.使用方法:
Scanner reader=new Scanner(System.in);
然後reader物件呼叫下列方法(函式),讀取使用者在命令列輸入的各種資料型別:
nextByte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShort()
注:上面由next()方法轉化而來,空格,TAB快結束
上述方法執行時都會造成堵塞,等待使用者在命令列輸入資料回車確認.
例如,擁護在鍵盤輸入
本行並且回車,該方法得到一個String型別的資料。相比nextLine()回車確認,按照行讀為string
3.例項
//逐行掃描檔案,並逐行輸出 public static void main(String[] args) throws FileNotFoundException { InputStream in = new FileInputStream(new File("C:\\AutoSubmit.java")); Scanner s = new Scanner(in); while(s.hasNextLine()){ System.out.println(s.nextLine()); } }
//all out import java.util.Scanner; public class testNextline { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("請輸入字串:"); while (true) { String line = s.nextLine(); if (line.equals("exit")) break; System.out.println(">>>" + line); } } }
//next(), <span style="font-size:18px;">nextByte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShort() //用法類似</span>
import java.util.Scanner;
public class hasNextInt {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("請輸入一個整數");
while(in.hasNextInt()){
int num = in.nextInt();
System.out.println("數字"+num);//輸入123 12只能讀到123
System.out.println("請輸入一個字串");
String str = in.next();//輸入 adc cv只能讀到adc
System.out.println("字串"+str);
}
}
}
4.其他相關方法 下面這幾個相對實用: delimiter()
返回此 Scanner 當前正在用於匹配分隔符的 Pattern。
public static void main(String[] args) throws FileNotFoundException {
Scanner s = new Scanner("123 asda bf 12 123 nh l,sf.fl ...adafafa lda");
// s.useDelimiter(" |,|\\.");
while (s.hasNext()) {
System.out.println(s.next());
}
}
123
asda
bf
12
123
nh
l,sf.fl
...adafafa
lda
hasNext()
判斷掃描器中當前掃描位置後是否還存在下一段。(原APIDoc的註釋很扯淡)
hasNextLine()
如果在此掃描器的輸入中存在另一行,則返回 true。
next()
查詢並返回來自此掃描器的下一個完整標記(String)。
nextLine()
此掃描器執行當前行,並返回跳過的輸入資訊。 5. 一個讀寫例項
import java.util.Scanner;
public class test{
public static int getCount(String str,char c){
int count = 0;
if(str != null && str.length() > 0){
for(int i = 0;i < str.length();i++){
if(c == str.charAt(i)){
count++;
}
}
}else{
count = 0;
}
return count;
}
public static void main(String[] args){
Scanner s = new Scanner(System.in);
String str = s.next();
char c = s.next().charAt(0);
int i = getCount(str,c);
System.out.println(i);
}
}