先來看一個簡單的例子:
 import java.util.*;
 public class ScannerTest {
   public static void main(String[] args){
         Scanner scanner=new Scanner(System.in);
         double a=scanner.nextDouble();
         System.out.println(a);
     }
 }
 運行
 輸入 一個任意數然后輸出這個數
注意粗體字的地方,這一行就實現了從控制台輸入數字的功能,如果要輸入字符串
 可以用
 String a=scanner.next();//注意不是nextString()
在此簡單介紹一下scanner.next()與scanner.nextline()的區別
a. next
輸入時候遇到空格回車TAP等結束符自動忽略直到遇到可讀字符,遇到可讀字符后再遇到結束符時自動判定讀取完畢
b. 結束方法只有回車,也就是說之前輸入無論是什么都會被讀進去
PS:nextdouble nextint等 都和next讀取性質一樣
Scanner還可以直接掃描文件。比如(有點長,耐心一點):
 import java.util.*;
 import java.io.*;
 public class ScannerTest {
     public static void main(String[] args) throws IOException{//這里涉及到文件io操作
         double sum=0.0;
         int count=0;
         FileWriter fout=new FileWriter("text.txt");
         fout.write("2 2.2 3 3.3 4 4.5 done");//往文件里寫入這一字符串
         fout.close();
         FileReader fin=new FileReader("text.txt");
         Scanner scanner=new Scanner(fin);//注意這里的參數是FileReader類型的fin
         while(scanner.hasNext()){//如果有內容
             if(scanner.hasNextDouble()){//如果是數字
                 sum=sum+scanner.nextDouble();
                 count++;
             }else{
                 String str=scanner.next();
                 if(str.equals("done")){
                     break;
                 }else{
                     System.out.println("文件格式錯誤!");
                     return;
                 }
             }
         }
         fin.close();
         System.out.println("文件中數據的平均數是:"+sum/count);
     }
 }
 結果輸出文件中數據的平均數是:3.1666666666666665
 這段程序的功能是將"2 2.2 3 3.3 4 4.5 done"寫入文件scanner讀取文件中的數直到done結束。並求出數字的平均值,比較有意思的是scanner會自動一空格作為分割符區分不同數字。當然也可以通過scanner.useDelimiter(Pattern pattern)來設置不同的分割符,比如 scanner.useDelimiter(",*");
 ===========================================================================================================
Java代碼
    1. java.util.Scanner的總結 
    2. //構造方法(常用的三個) 
    3. //Scanner(File source) 
    4. //Scanner(InputStream source) 
    5. //Scanner(String source) 
    6.  
    7. //對比兩種方式的比較 
    8. //Scanner sc=new Scanner(System.in);  
    9. //BufferedReader br=new BufferedReader(new InputStreamReader(System.in))  
   10.  
   11. //方法 
   12. //useDelimiter(Pattern pattern)改變token的分割方式,默認的是空格,傳Pattern對象 
   13. //useDelimiter(String pattern)改變token的分割方式,默認的是空格,傳String 
   14.  
   15. //hasNext();查看是否有token的分割段 
   16. //hasNextInt();查看是否有int類型的token的分割段 
   17. //nextInt();返回下一個int的數值 
   18. //nextLine();返回一行 
   19.  
   20. //hasNext(Pattern pattern);返回下一個pattern類型的token 
   21.  
   22. public class ScannerTest { 
   23.     public static void main(String[] args){ 
   24.         String str = "1.1 22.2 s 4 5.3 6 7.5 8 9"; 
   25.         Scanner scanner = new Scanner(str); 
   26.         //scanner.useDelimiter("\\."); 
   27.         while(scanner.hasNext()){ 
   28.             if(scanner.hasNext(Pattern.compile("\\d\\.\\d"))){ 
   29.                 System.out.println(scanner.next()); 
   30.             }else{ 
   31.                 scanner.next();//要調用一下next()相關的方法才會到下一個token 
   32.             } 
   33.         }            
   34.     } 
   35. } 
   36.  
   37. 結果: 
   38. 1.1 
   39. 5.3 
   40. 7.5 
   41.  
   42.  
   43. public class ScannerTest { 
   44.     public static void main(String[] args){ 
   45.         String str = "1.2 s.4 5 6.7 8 9"; 
   46.         Scanner scanner = new Scanner(str); 
   47.                   //token以.分割 
   48.         scanner.useDelimiter("\\."); 
   49.         while(scanner.hasNext()){ 
   50.             System.out.println(scanner.next()); 
   51.         }            
   52.     } 
   53. } 
最后說明一下,在java開發中基本很少用到Scanner,因為不需要動態輸入一個數
轉載至:http://blog.sina.com.cn/s/blog_7014ad5c01018sov.html
