Scanner的日常用法
2016-04-19 21:19
417 查看
转载自:java.util.Scanner的日常用法
Scanner是新增的一个简易文本扫描器,在 JDK 5.0之前,是没有的。查看最新在线文档:
可见,Scanner是没有子类的。
在JDK API关于Scanner提供了比较多的构造方法与方法。那么现在列出一些在平时工作中比较常用的方法,仅供大家参考:
构造方法:
Scanner对象
方法:
以下一个综合例子:
转载自:JAVA Scanner的用法
先来看一个简单的例子:
运行
输入 一个任意数然后输出这个数
注意粗体字的地方,这一行就实现了从控制台输入数字的功能,如果要输入字符串
可以用
Scanner还可以直接扫描文件。比如(有点长,耐心一点):
结果输出文件中数据的平均数是:3.1666666666666665
这段程序的功能是将”2 2.2 3 3.3 4 4.5 done”写入文件scanner读取文件中的数直到done结束。并求出数字的平均值,比较有意思的是scanner会自动一空格作为分割符区分不同数字。当然也可以通过
其它参考:
java.util.Scanner应用详解(获取输入)
Scanner是新增的一个简易文本扫描器,在 JDK 5.0之前,是没有的。查看最新在线文档:
public final class Scanner extends Object implements Iterator<String>, Closeable
可见,Scanner是没有子类的。
在JDK API关于Scanner提供了比较多的构造方法与方法。那么现在列出一些在平时工作中比较常用的方法,仅供大家参考:
构造方法:
public Scanner(File source) throws FileNotFoundException public Scanner(String source) public Scanner(InputStream source) //用指定的输入流来创建一个
Scanner对象
方法:
public void close() //关闭 public Scanner useDelimiter(String pattern) //设置分隔模式 ,String可以用Pattern取代 public boolean hasNext() //检测输入中,是否,还有单词 public String next() //读取下一个单词,默认把空格作为分隔符 public String nextLine() //读行 注释:从hasNext(),next()繁衍了大量的同名不同参方法,这里不一一列出,感兴趣的,可以查看API
以下一个综合例子:
package com.ringcentral.util; import java.util.*; import java.io.*; /** * author @dylan * date @2012-5-27 */ public class ScannerTest { public static void main(String[] args) { file_str(true); reg_str(); } /** * * @param flag : boolean */ public static void file_str(boolean flag){ String text1= "last summber ,I went to the italy"; //扫描本文件,url是文件的路径 String url = "E:\\Program Files\\C _ Code\\coreJava\\src\\com\\ringcentral\\util\\ScannerTest.java"; File file_one = new File(url); Scanner sc= null; /* * 增加一个if语句,通过flag这个参数来决定使用那个构造方法。 * flag = true :输入结果为本文件的内容。 * flag = false :输入结果为 text1的值。 */ if(flag){ try { sc =new Scanner(file_one); } catch (FileNotFoundException e) { e.printStackTrace(); } }else{ sc=new Scanner(text1); } while(sc.hasNext()) System.out.println(sc.nextLine()); //记得要关闭 sc.close(); } public static void reg_str(){ String text1= "last summber 23 ,I went to 555 the italy 4 "; //如果你只想输入数字:23,555,4;可以设置分隔模式,把非数字进行过滤。 Scanner sc = new Scanner(text1).useDelimiter("\\D\\s*"); while(sc.hasNext()){ System.out.println(sc.next()); } sc.close(); } } public static void input_str(){ Scanner sc = new Scanner(System.in); System.out.println(sc.nextLine()); sc.close(); System.exit(0); }
转载自: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还可以直接扫描文件。比如(有点长,耐心一点):
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.util.Scanner应用详解(获取输入)
相关文章推荐
- 简单算法汇总
- 线程安全的单例模式
- Win7x64系统过TP的一些尝试和目前遇到的问题
- CentOS 6.5 安装配置Tomcat7服务器
- Android网络之数据解析----SAX方式解析XML数据
- 【NOIP practice】BSOJ 2998修复公路 最小生成树
- 拓扑排序实现
- HDU-3746 Cyclic Nacklace ( kmp )
- 颜色追踪块CamShift---33
- MySQL约束操作
- ListView动画展开布局 ExpandableLayout源码解析
- Android系列之网络(二)----HTTP请求头与响应头
- Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)
- 卡尔曼滤波器的理解,C代码实现,和opencv里面KalmanFilter 的使用
- 计算四棱柱的表面积与体积
- Generics Variance
- 九度 1017
- LA 3602 DNA 序列 模拟
- Python使用traceback.print_exc()来代替print e 来输出详细的异常信息
- Expression is not assignable