A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 肖勇 中级黑马   /  2013-9-20 22:38  /  1692 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨增坤 于 2013-9-22 20:57 编辑

Scanner in=new Scanner(System.in);
    System.out.print("Hello world!")
    double d = in.nextDouble();
我的疑问在 第一行 和 第三行
   1、 带参数的 对象,是什么意思?  是说创建了一个 in对象,它等于System.in么??
   2、in.nextDouble() 是Scanner里面的原有函数么??  可以直接调用?

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 常在河边走_ 于 2013-9-20 22:47 编辑

System.in 是 “标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。in.nextDouble() 是Scanner里面的一个方法, 不是静态的, 所以要用对象调用

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
Scanner可以接收InputStream 、File 、String等对象的参数。
用InputStream的对象表示数据来源于输入流,System.in 是键盘输入流,则表示数据来源于键盘输入;
用File的对象表示数据来自于文件;
而String类型的对象则表示数据来自这个String类型的对象中存储的值。
nextDouble是Scanner类的非静态方法,可以通过Scanner的对象调用

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 狼人→浪人 于 2013-9-20 23:08 编辑

public final class Scanner
extends Object
implements Iterator<String>
一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。

Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。

例如,以下代码使用户能够从 System.in 中读取一个数:

    Scanner sc = new Scanner(System.in);
     int i = sc.nextInt();

以上来至JDK API 1.6      
Scanner sc = new Scanner(System.in);   //sc是一个文本扫描器对象,命名没有限制,只是你那题中命名为in,别被误导     
int i = sc.nextInt();    //sc对象调用相应的数据类型方法,你懂的    下面附上scanner的构造函数:


构造方法摘要
Scanner(File source)
          构造一个新的 Scanner,它生成的值是从指定文件扫描的。
Scanner(File source, String charsetName)
          构造一个新的 Scanner,它生成的值是从指定文件扫描的。
Scanner(InputStream source)
          构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。
Scanner(InputStream source, String charsetName)
          构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。
Scanner(Readable source)
          构造一个新的 Scanner,它生成的值是从指定源扫描的。
Scanner(ReadableByteChannel source)
          构造一个新的 Scanner,它生成的值是从指定信道扫描的。
Scanner(ReadableByteChannel source, String charsetName)
          构造一个新的 Scanner,它生成的值是从指定信道扫描的。
Scanner(String source)
          构造一个新的 Scanner,它生成的值是从指定字符串扫描的。

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
Scanner类有一个构造方法Scanner(InputStream source),这个构造方法需要传入一个输入流 而System类里面的in方法会返回一个输入流:public static final InputStream in,“标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。 所以Scanner里面的参数可以是System.in这个键盘录入服务了。
通过查阅API可知,Scanner类里面有一个nextDouble()方法,可以返回一个double数据:public double nextDouble(),所以新建一个Scanner对象后可以直接调用这个方法。

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
以上大家都说的很好了,我就补充一点吧,就是你的第一个问题,"1.带参数的 对象,是什么意思?"
就是给构造函数传参,你可以看看装饰类.当传的参数是对象时,就是对象进行装饰,给对象添加功能,System.in是一个对象,添加的功能之一就是nextDouble()

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 doevents 于 2013-9-22 09:18 编辑

楼上几位到重点了,System.in是标准输入流,nextDouble是他的一个方法,是用来接收Double的数据的,它并不是静态变量,要通过对象调用的,详细你可以参考下API,里面都有详细介绍的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马