Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 415|回复: 0

[Java基础知识]Scanner入门实例

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-1 21:07:10 | 显示全部楼层 |阅读模式
    1. 实例1:
    2. // 使用Scanner从键盘读数据并计算平均值
    3. import java.util.*;

    4. class AvgNums {
    5.   public static void main(String args[]) {
    6.     Scanner conin = new Scanner(System.in);

    7.     int count = 0;
    8.     double sum = 0.0;

    9.     System.out.println("Enter numbers to average.");

    10.     // 读取数据并求和,直到遇到一个不是有效的double标记为止.
    11.     while(conin.hasNext()) {
    12.       if(conin.hasNextDouble()) {
    13.         sum += conin.nextDouble();
    14.         count++;
    15.       }
    16.       else {
    17.         String str = conin.next();  
    18.         if(str.equals("done")) break;
    19.         else {
    20.           System.out.println("Data format error.");
    21.           return;
    22.         }
    23.       }
    24.     }

    25.     System.out.println("Average is " + sum / count);
    26.   }
    27. }
    28. 运行结果:
    29. C:java>java   AvgNums
    30. Enter numbers to average.
    31. 45
    32. 4.5
    33. 23.12
    34. done
    35. Average is 24.206666666666667
    复制代码

      
      
      
    1. 实例2
    2. // 使用Scanner从文件读数据并计算平均值,Scanner读一个源的方法适合读另一个源.
    3. import java.util.*;
    4. import java.io.*;

    5. class AvgFile {
    6.   public static void main(String args[])
    7.     throws IOException {

    8.     int count = 0;
    9.     double sum = 0.0;

    10.     // 创建文件和数据
    11.     FileWriter fout = new FileWriter("test.txt");
    12.     fout.write("2 3.4 5 6 7.4 9.1 10.5 done");
    13.     fout.close();

    14.     FileReader fin = new FileReader("Test.txt");

    15.     Scanner src = new Scanner(fin);

    16.     // 读文件中的数据并求和.
    17.     while(src.hasNext()) {
    18.       if(src.hasNextDouble()) {
    19.         sum += src.nextDouble();
    20.         count++;
    21.       }
    22.       else {
    23.         String str = src.next();  
    24.         if(str.equals("done")) break;
    25.         else {
    26.           System.out.println("File format error.");
    27.           return;
    28.         }
    29.       }
    30.     }

    31.     fin.close();
    32.     System.out.println("Average is " + sum / count);
    33.   }
    34. }
    35. 运行结果:
    36. C:java>java   AvgFile
    37. Average is 6.2
    38. 实例3
    39. // 使用 Scanner从文件中读取各种类型的数据
    40. import java.util.*;
    41. import java.io.*;

    42. class ScanMixed {
    43.   public static void main(String args[])
    44.     throws IOException {

    45.     int i;
    46.     double d;
    47.     boolean b;
    48.     String str;

    49.     // 创建一个供Scanner读取的文件
    50.     FileWriter fout = new FileWriter("test.txt");
    51.     fout.write("Testing Scanner 10 12.2 one true two false");
    52.     fout.close();

    53.     FileReader fin = new FileReader("Test.txt");

    54.     Scanner src = new Scanner(fin);


    55.     // 读直到文件尾,读取之前必须检查一下哪种数据类型可得.
    56.     while(src.hasNext()) {
    57.       if(src.hasNextInt()) {
    58.         i = src.nextInt();
    59.         System.out.println("int: " + i);
    60.       }
    61.       else if(src.hasNextDouble()) {
    62.         d = src.nextDouble();
    63.         System.out.println("double: " + d);
    64.       }
    65.       else if(src.hasNextBoolean()) {
    66.         b = src.nextBoolean();
    67.         System.out.println("boolean: " + b);
    68.       }
    69.       else {
    70.         str = src.next();
    71.         System.out.println("String: " + str);
    72.       }
    73.     }

    74.     fin.close();
    75.   }
    76. }
    77. 运行结果:
    78. C:java>java    ScanMixed
    79. String: Testing
    80. String: Scanner
    81. int: 10
    82. double: 12.2
    83. String: one
    84. boolean: true
    85. String: two
    86. boolean: false
    87. 实例4
    88. // 设置定界符
    89. // Scanner基于一组定界符定义标记的开始与结束,默认的定界符是空白字符,用useDelimiter()可改变定界符  
    90. import java.util.*;
    91. import java.io.*;

    92. class SetDelimiters {
    93.   public static void main(String args[])
    94.     throws IOException {

    95.     int count = 0;
    96.     double sum = 0.0;

    97.     FileWriter fout = new FileWriter("test.txt");

    98.     // 现在用逗号和空格分隔数据.
    99.     fout.write("2, 3.4,    5,6, 7.4, 9.1, 10.5, done");
    100.     fout.close();

    101.     FileReader fin = new FileReader("Test.txt");

    102.     Scanner src = new Scanner(fin);

    103.     // 设置定界符为逗号、零个或多个空白,用正则表达式表示。
    104.     src.useDelimiter(", *");

    105.     // Read and sum numbers.
    106.     while(src.hasNext()) {
    107.       if(src.hasNextDouble()) {
    108.         sum += src.nextDouble();
    109.         count++;
    110.       }
    111.       else {
    112.         String str = src.next();  
    113.         if(str.equals("done")) break;
    114.         else {
    115.           System.out.println("File format error.");
    116.           return;
    117.         }
    118.       }
    119.     }

    120.     fin.close();
    121.     System.out.println("Average is " + sum / count);
    122.   }
    123. }
    124. 运行结果:
    125. C:java>java   SetDelimiters
    126. Average is 6.2
    127. 实例5
    128. /* 示范findInLine()方法,该方法在文本的下一行搜索指定的模式。如果找到该模式,匹配标记被甩掉并返回
    129. *方法签名如下
    130. *String findInLine(Pattern pattern)
    131. *String findInLine(String pattern)
    132. */

    133. import java.util.*;

    134. class FindInLineDemo {
    135.   public static void main(String args[]) {
    136.     String instr = "Name: Tom Age: 28 ID: 77";

    137.     Scanner conin = new Scanner(instr);

    138.     // 查找age.
    139.     conin.findInLine("Age:");  

    140.     if(conin.hasNext())
    141.       System.out.println(conin.next());
    142.     else
    143.       System.out.println("Error!");

    144.   }
    145. }
    146. 运行结果:
    147. C:java>java   FindInLineDemo
    148. 28
    复制代码


       
         
         
          
          

            
          

            
          
         
       

      


    源码下载:http://file.javaxxz.com/2014/10/1/210709875.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-21 21:59 , Processed in 0.376832 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表