Scanner的使用

  Scanner可以实现从字符串、输入流和文件的读取,在构造时可以选择你需要的读取方式,常见的构造方法有如下3个:

  • Scanner(File source):构造一个新的 Scanner,它生成的值是从指定文件扫描的。
  • Scanner(InputStream source):构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。
  • Scanner(String source):构造一个新的 Scanner,它生成的值是从指定字符串扫描的。

下面列举的列子将以从字符串读取的方式进行:

(1)以空格作为分割符取得单词(Scanner默认的分割方式就是空格):

  输入:Hello World! I am coming.

  输出:Hello World!I am coming.

String txt = "Hello World! I am coming.";
Scanner scanner = new Scanner(txt);
while(scanner.hasNext()){
    System.out.print(scanner.next() + " ");
}

(2)取得每一个字符(包括空格):

  由于Scanner里不可以直接这样做,所以我们采用间接的方式。先把整个字符串从Scanner中取出来,转换为char数组后,再逐个处理。

  输入:Hello World! I am coming.

  输出:H e l l o ◊ W o r l d !◊ I ◊ a m ◊ c o m i n g .(我们以◊表示输出的空格符号)

String txt = "Hello World! I am coming.";
Scanner scanner = new Scanner(txt);
if(scanner.hasNextLine()){
    char[] ch = scanner.nextLine().toCharArray();
    for(int i = 0; i < ch.length; i++){
        System.out.println(ch[i]);
    }
}

  如果不需要空格,只需要在后面的代码里加入是否为空格的判断就可以了。

(3)以逗号作为分割符取得单词(通过正则表达式设置Scanner的分割符):

  输入:Hello,World,I,am,coming

  输出:Hello World I am coming

String txt = "Hello,World,I,am,coming";
Scanner scanner = new Scanner(txt);
scanner.useDelimiter("\\,");
while(scanner.hasNext()){
    System.out.print(scanner.next() + " ");
}
时间: 2024-10-27 08:09:22

Scanner的使用的相关文章

通过Scanner从控制台获取数据

----------siwuxie095 Scanner类用于扫描从控制台输入的数据,可以接收字符串和基本数据类型的数据 Scanner类位于 java.util.Scanner 包中 Scanner类的常用方法: (1)String next(); 作用:接收控制台输入的一个字符串「以空格或回车作为一次数据 输入的结束,因此 next() 方法不能把空格作为字符串接收」 (2)String nextLine(); 作用:接收控制台输入的一个字符串「以回车作为一次数据输入 的结束,因此 next

Scanner类

Scanner的构造方法原理 ? Scanner(InputStream source) ? System类下有一个静态的字段: ? public static final InputStream in; 标准的输入流,对应着键盘录入. 一般方法 ? hasNextXxx() 判断是否还有下一个输入项,其中Xxx可以是Int,Double等.如果需要判断是否包含下一个字符串,则可以省略Xxx ? nextXxx() 获取下一个输入项.Xxx的含义和上个方法中的Xxx相同,默认情况下,Scanne

java 程序,通过scanner 编写计算器

package test; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; class Calculator { private Double num1; private Double num2; private String var; private Scanner input; public Double getNum1() { return num1; } p

Java学习笔记-----Scanner用法(转)

转自:http://blog.sina.com.cn/s/blog_7014ad5c01018sov.html 先来看一个简单的例子:import java.util.*;public class ScannerTest { public static void main(String[] args){        Scanner scanner=new Scanner(System.in);        double a=scanner.nextDouble();        Syste

Java中Scanner类在nextInt()后无法输入nextLine()的问题

首先,Scanner是一个扫描器,它扫描数据都是去内存中一块缓冲区中进行扫描并读入数据的,而我们在控制台中输入的数据也都是被先存入缓冲区中等待扫描器的扫描读取.这个扫描器在扫描过程中判断停止的依据就是“空白符”,空格啊,回车啊什么的都算做是空白符. nextInt()方法在扫描到空白符的时候会将前面的数据读取走,但会丢下空白符“\r”在缓冲区中,但是,nextLine()方法在扫描的时候会将扫描到的空白符一同清理掉. 了解了这两个方法特性和区别,就知道了上边的代码究竟是怎么回事,以及知道了解决的

Java键盘输入的几种方式,大爱Scanner

1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStreamReader; 4 import java.util.Scanner; 5 6 public class EnterTest { 7 8 public static void main(String[] args) { //主方法 9 CharTest(); //调用System.in方法 10 ReadTest()

Java学习笔记之[ 利用扫描仪Scanner进行数据输入 ]

/*********数据的输入********//**利用扫描仪Scanner进行数据输入 怎么使用扫描仪Scanner *1.放在类声明之前,引入扫描仪 import java.util.Scanner; *2.声明一个新的扫描仪(即向内存申请一个空间) Scanner in *3.赋值 in=new Scanner(System.in); Scanner in=new Scanner(System.in); *4.使用扫描仪 整形数据输入:in.nextInt()来接收 双精度小数输入:in

自制计算器(一):Scanner

今天来讲第一部分Scanner,俗称扫描器,也叫词法分析器.想要了解Scanner究竟做了什么,我们要从整个流程讲起. 首先,计算器得到的输入的是一串字符,如 ”1 + 2“. 如果不学编译原理,应该如何计算出结果呢?可能会利用栈,一个数字栈一个符号栈云云,但这样处理简单运算还好,如果有大于10的数,小数或者含有括号的情况,情况会很糟糕,何况编程语言本就比四则运算复杂许多.一般编译器的做法,则是将字符串以Token为单位分割开来.Token,中译为”标记.令牌“,不直观,你可以理解为表达式中的最

利用Scanner键盘输入

Scanner不在java.lang.*包中,故必须import包java.util.Scanner.输入流(InputStream)为System.in 方法如下:Scanner s= new Scanner(System.in);        String str=s.next();        System.out.println(str);懒得写源码了.就写个字符串意思一下吧.-_-||

[转]【基于zxing的编解码实战】精简Barcode Scanner篇

通过<[搞定条形码]zxing项目源码解读(2.3.0版本,Android部分)>的分析,现在可以实现最终目标了:精简Barcode Scanner并将其中的编码和解码分离为两个独立的部分,方便日后快速集成到自己的项目中去. 编码 在上一篇分析中,对于编码部分已经有所透露,核心部分只有两个package.现在将分享的部分再去掉分享app.分享书签的功能,保留分享剪切板和分享联系人以及编码文本的功能: 编码部分的逻辑清晰,代码组织整齐,在前面了解zxing整体结构的基础上一直做减法即可. 精简过