Scanner入门实例

<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>
实例1:
// 使用Scanner从键盘读数据并计算平均值 
import java.util.*; 
 
class AvgNums { 
  public static void main(String args[]) { 
    Scanner conin = new Scanner(System.in); 
 
    int count = 0; 
    double sum = 0.0; 
 
    System.out.println("Enter numbers to average."); 
 
    // 读取数据并求和,直到遇到一个不是有效的double标记为止.
    while(conin.hasNext()) { 
      if(conin.hasNextDouble()) { 
        sum += conin.nextDouble(); 
        count++; 
      } 
      else { 
        String str = conin.next();  
        if(str.equals("done")) break; 
        else { 
          System.out.println("Data format error."); 
          return; 
        } 
      } 
    } 
 
    System.out.println("Average is " + sum / count); 
  } 
}
运行结果:
C:/java>java   AvgNums
Enter numbers to average.
45
4.5
23.12
done
Average is 24.206666666666667


实例2
// 使用Scanner从文件读数据并计算平均值,Scanner读一个源的方法适合读另一个源.
import java.util.*; 
import java.io.*; 
 
class AvgFile { 
  public static void main(String args[]) 
    throws IOException { 
 
    int count = 0; 
    double sum = 0.0; 
 
    // 创建文件和数据
    FileWriter fout = new FileWriter("test.txt"); 
    fout.write("2 3.4 5 6 7.4 9.1 10.5 done"); 
    fout.close(); 
 
    FileReader fin = new FileReader("Test.txt"); 
 
    Scanner src = new Scanner(fin); 
 
    // 读文件中的数据并求和. 
    while(src.hasNext()) { 
      if(src.hasNextDouble()) { 
        sum += src.nextDouble(); 
        count++; 
      } 
      else { 
        String str = src.next();  
        if(str.equals("done")) break; 
        else { 
          System.out.println("File format error."); 
          return; 
        } 
      } 
    } 
 
    fin.close(); 
    System.out.println("Average is " + sum / count); 
  } 
}
运行结果:
C:/java>java   AvgFile
Average is 6.2
实例3
// 使用 Scanner从文件中读取各种类型的数据
import java.util.*; 
import java.io.*; 
 
class ScanMixed { 
  public static void main(String args[]) 
    throws IOException { 
 
    int i; 
    double d; 
    boolean b; 
    String str; 
 
    // 创建一个供Scanner读取的文件
    FileWriter fout = new FileWriter("test.txt"); 
    fout.write("Testing Scanner 10 12.2 one true two false"); 
    fout.close(); 
 
    FileReader fin = new FileReader("Test.txt"); 
 
    Scanner src = new Scanner(fin); 
 
 
    // 读直到文件尾,读取之前必须检查一下哪种数据类型可得.
    while(src.hasNext()) { 
      if(src.hasNextInt()) { 
        i = src.nextInt(); 
        System.out.println("int: " + i); 
      } 
      else if(src.hasNextDouble()) { 
        d = src.nextDouble(); 
        System.out.println("double: " + d); 
      } 
      else if(src.hasNextBoolean()) { 
        b = src.nextBoolean(); 
        System.out.println("boolean: " + b); 
      } 
      else { 
        str = src.next(); 
        System.out.println("String: " + str); 
      } 
    } 
 
    fin.close(); 
  } 
}
运行结果:
C:/java>java    ScanMixed
String: Testing
String: Scanner
int: 10
double: 12.2
String: one
boolean: true
String: two
boolean: false
实例4
// 设置定界符 
// Scanner基于一组定界符定义标记的开始与结束,默认的定界符是空白字符,用useDelimiter()可改变定界符  
import java.util.*; 
import java.io.*; 
 
class SetDelimiters { 
  public static void main(String args[]) 
    throws IOException { 
 
    int count = 0; 
    double sum = 0.0; 
 
    FileWriter fout = new FileWriter("test.txt"); 
 
    // 现在用逗号和空格分隔数据. 
    fout.write("2, 3.4,    5,6, 7.4, 9.1, 10.5, done"); 
    fout.close(); 
 
    FileReader fin = new FileReader("Test.txt"); 
 
    Scanner src = new Scanner(fin); 
 
    // 设置定界符为逗号、零个或多个空白,用正则表达式表示。
    src.useDelimiter(", *"); 
 
    // Read and sum numbers. 
    while(src.hasNext()) { 
      if(src.hasNextDouble()) { 
        sum += src.nextDouble(); 
        count++; 
      } 
      else { 
        String str = src.next();  
        if(str.equals("done")) break; 
        else { 
          System.out.println("File format error."); 
          return; 
        } 
      } 
    } 
 
    fin.close(); 
    System.out.println("Average is " + sum / count); 
  } 
}
运行结果:
C:/java>java   SetDelimiters
Average is 6.2
实例5
/* 示范findInLine()方法,该方法在文本的下一行搜索指定的模式。如果找到该模式,匹配标记被甩掉并返回
 *方法签名如下
 *String findInLine(Pattern pattern)
 *String findInLine(String pattern)
 */
 
import java.util.*; 
 
class FindInLineDemo { 
  public static void main(String args[]) { 
    String instr = "Name: Tom Age: 28 ID: 77"; 
 
    Scanner conin = new Scanner(instr); 
 
    // 查找age. 
    conin.findInLine("Age:");  
 
    if(conin.hasNext()) 
      System.out.println(conin.next()); 
    else 
      System.out.println("Error!"); 
 
  } 
}
运行结果:
C:/java>java   FindInLineDemo
28
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值