黑马程序员技术交流社区

标题: Scanner是什么? [打印本页]

作者: xiayoutianxia    时间: 2014-9-20 11:48
标题: Scanner是什么?
本帖最后由 xiayoutianxia 于 2014-10-12 15:54 编辑

看到好多代码里都用Scanner,这个视频里貌似没有?
求讲解

作者: new999    时间: 2014-9-21 09:27
一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
比如:让用户用键盘输入数字:
     Scanner sc = new Scanner(System.in);
     int i = sc.nextInt();
让用户用键盘输入一个字符串:
     Scanner sc = new Scanner(System.in);
     String str = sc.nextLine();
...

作者: yueyazhishang    时间: 2014-9-21 09:31
Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象. Scanner reader=new Scanner(System.in);  然后reader对象调用下列方法(函数),读取用户在命令行输入的各种数据类型: next.Byte(),nextDouble(),nextFloat,nextInt(),nextLin(),nextLong(),nextShot()  上述方法执行时都会造成堵塞,等待用户在命令行输入数据回车确认.例如,拥护在键盘输入12.34,hasNextFloat()的值是true,而hasNextInt()的值是false. NextLine()等待用户输入一个文本行并且回车,该方法得到一个String类型的数据。
作者: yueyazhishang    时间: 2014-9-21 09:32
Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象.
Scanner reader=new Scanner(System.in);
然后reader对象调用下列方法(函数),读取用户在命令行输入的各种数据类型: next.Byte(),nextDouble(),nextFloat,nextInt(),nextLin(),nextLong(),nextShot()
上述方法执行时都会造成堵塞,等待用户在命令行输入数据回车确认.例如,拥护在键盘输入12.34,hasNextFloat()的值是true,而hasNextInt()的值是false. NextLine()等待用户输入一个文本行并且回车,该方法得到一个String类型的数据。
具体可以参考:
  1. http://blog.csdn.net/pkbilly/article/details/3068912
复制代码

作者: 泡沫__opt    时间: 2014-9-21 10:56
学习了~~
作者: xiayoutianxia    时间: 2014-9-21 11:19
yueyazhishang 发表于 2014-9-21 09:32
Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象.
Scanner reader=new Scanner(System.in);
然后re ...

长知识了!
作者: yueyazhishang    时间: 2014-9-21 11:42
xiayoutianxia 发表于 2014-9-21 11:19
长知识了!

:),一起学习一起进步。
作者: Apologize丶    时间: 2014-9-21 21:13
解释的很清楚,在这学习了
作者: 卧龙小    时间: 2014-9-22 00:46
恩,楼上说的很好,扫描器还可以使用不同的分隔符。写了个Dome 测试了下,下面是从一个字符串读取若干项的例子:
  String input = "1 a 2 b";
        Scanner s = new Scanner(input).useDelimiter(" ");
        System.out.println(s.nextInt());
        System.out.println(s.next());
        System.out.println(s.nextInt());
        s.close();

输出

1
a
2


有两种模式:
useDelimiter(Pattern pattern)  扫描器的分隔模式设置为指定模式。
useDelimiter(String pattern)    扫描器的分隔模式设置为从指定 String 构造的模式。

作者: xiayoutianxia    时间: 2014-9-23 09:10
yueyazhishang 发表于 2014-9-21 09:31
Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象. Scanner reader=new Scanner(System.in);  然后re ...

这些知识在哪里找到的?
作者: yueyazhishang    时间: 2014-9-23 09:14
xiayoutianxia 发表于 2014-9-23 09:10
这些知识在哪里找到的?

我不是贴上链接了吗?
作者: qq8921310    时间: 2014-9-23 10:06
哦,原来如此啊,
作者: xiayoutianxia    时间: 2014-9-23 10:28
yueyazhishang 发表于 2014-9-23 09:14
我不是贴上链接了吗?

我是说其他的扩展知识
作者: yanghao    时间: 2014-9-25 17:41
可以查阅Api了解具体用法

作者: 清晨    时间: 2014-9-25 17:48
说的不错,谢谢分享
作者: 好听就好    时间: 2014-9-25 22:01
知道了些。学习了
作者: 崔小旭    时间: 2014-9-26 23:25

package cn.itcast;

import java.util.Scanner;

/*
* Scanner
* 1、导包
* 2、创建对象
* 3、调用方法接受键盘录入信息,使用信息(给某个变量赋值)
*
*
* nextInt() 将输入的内容转换成整数
* nextDouble()
* nextFloat()
* next() 查找并返回来自此扫描器的下一个完整标记。
* nextLine() 此扫描器执行当前行,并返回跳过的输入信息。
*
* */
public class Demo {

        public static void main(String[] args) {
       
                Scanner scanner = new Scanner(System.in);
                //int nextInt = scanner.nextInt();
                //System.out.println(nextInt);
               
//                当连续输入时,使用next,会出现bug,需要鼠标往下移一行
//                如果先nextLine再next,则第二次无法输入
//                如果先nextInt再使用NextLine,则第二次无法输入
               
//                int nextInt = scanner.nextInt();
//                System.out.println("请输入nextLine方法返回的字符串");
                String nextLine = scanner.nextLine();
               
//                System.out.println("请输入next方法返回的字符串");
//                String next = scanner.next();
               
//                System.out.println(nextInt);
                System.out.println(nextLine);
//                System.out.println(next);
                scanner.close();
        }
}
自己去试试几种情况吧
作者: yueyazhishang    时间: 2014-9-27 10:43
xiayoutianxia 发表于 2014-9-23 09:10
这些知识在哪里找到的?

网上资源很多,还有就是多做题。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2