zoukankan      html  css  js  c++  java
  • Scanner用法

    先来看一个简单的例子:
    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

  • 相关阅读:
    Linux Commands
    sizeof操作符的使用详解
    在Vim中使用cscope
    MySQL学习笔记
    Online judge for leetcode
    使用Vim,让你工作效率更高
    Ext JS笔记
    安装J2EE开发环境
    这些都是什么啊
    QrCode二维码的实现原理
  • 原文地址:https://www.cnblogs.com/qiangqiangqiang/p/7681815.html
Copyright © 2011-2022 走看看