Scanner的使用

Scanner主要功能是扫描键盘录入的数据

1.判断

2.获取下一个标记


1.1 首先引入Object类

1.1.1-Object 概述:

Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起。作为其他所有类的基类,Object具有哪些属性和行为,是Java语言设计背后的思维体现。

java.lang包在使用的时候无需显示导入,编译时由编译器自动导入。

Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。

Object类是Java中唯一没有父类的类。

其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法.

1.1.2-Object 构造方法:

Object():无参构造

Java中规定:在类定义过程中,对于未定义构造函数的类,默认会有一个Object基类无参数的构造函数。

当然,并不是所有的类都是通过此种方式去构建,也自然的,并不是所有的类构造函数都是public。

1.1.3-Object 成员方法:

public int hashCode()返回一个整形数值,表示该对象的哈希码值

public final Class getClass()返回一个对象的运行时类

public boolean equals(Object obj)指示某个其他对象是否与此对象“相等”

protected

void finalize() 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法

protectedObject clone()   创建并返回此对象的一个副本

public String toString() 返回该对象的字符串表示

 

注意1:toString()方法相信大家都经常用到,即使没有显式调用,但当我们使用System.out.println(obj)时,其内部也是通过toString()来实现的。

注意2:==和equals()的区别?

       ==:既可以比较基本数据类型也可以比较引用数据类型

              基本类型:比较的是值是否相同

              引用类型:比较的是地址值是否相同

       equals():只能比较引用数据类型

              默认情况下,比较的是地址值是否相同。

              重写,比较两个内容是否相等。

1.1.4-Object 注意事项:

因为Object类时所有类的基类,所以任何类中都存在这些方法,但是只要用到这些方法时基本都需要重写,因为在object类中的这些方法并不一定适合我们的需求环境。所以这里就不再写代码实现了。

2.1 其次最终引入Scanner的应用

2.1.1- Scanner 概述:

键盘录入类。在JDK1.5版本出现。

Java.util.Scanner是Java5的新特征,主要功能是键盘录入数据。

2.1.2- Scanner 构造方法:

Scanner(InputStreamsource)  键盘录入

例如:Scanner Scanner = newScanner(System.in);

2.1.3- Scanner 成员方法:

hasNext()  判断扫描器中当前扫描位置后是否还存在下一段

hasNextLine()如果在此扫描器的输入中存在另一行,则返回 true。

next() 查找并返回来自此扫描器的下一个完整标记。

nextLine() 此扫描器执行当前行,并返回跳过的输入信息。

以下是对以上四类的详解:

intnextInt(int radix)   //将输入信息的下一个标记扫描为一个 int。

 String nextLine()    // 此扫描器执行当前行,并返回跳过的输入信息。

 long nextLong()     // 将输入信息的下一个标记扫描为一个 long。

 short nextShort()  //  将输入信息的下一个标记扫描为一个short。

常用的成员方法代码如下所示:

将键盘录入的信息全部打印输出到控制台代码如下所示:

2.1.4- Scanner 五个注意事项:

1、使用nextInt()时输入的内容必须为数字,如果输入了字符串,程序结束并且会报异常.

效果如下图所示:

注:需要仔细审题,再进行其测试.

(1)使用nextInt()时输入的内容必须为数字,如果输入了字符串,程序结束并且会报异常。

案例:

            int  i = scanner.nextInt();

            System.out.println(i);

2、nextInt()和next()判断读取结束的标识是空白符;比如空格、回车、tab键,而nextLine()的结束标识是回车也就是"\r".

效果如下图所示:

-1(第一种是当(即遇到那些字符就会结束掉):

第二种是(如果不想让它遇到空格结束的解决方案是:nextLine())):

(2)nextInt()和next()判断读取结束的标识是空白符;比如空格、回车、tab,而nextLine()的结束标识是回车也就是“\r”。

案例:

      int i = scanner.nextInt();//遇到空格、回车、tab键就会结束

      System.out.println(i);

//如果不想让他遇到空格结束的解决方案是:nextLin()

      String s = scanner.nextLine();

      System.out.println(s);

3、next()和nextInt()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键,

Tab键或Enter键等结束符,next()方法会自动将其去掉,而nextLine()不管是否读到有效字符

遇到结束符都会结束.

效果如下图所示:

-1(第一种:nextInt()):

-2(第二种:next()):

-3(第三种:nextLine()):

(3)next()和nextInt()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,而nextLine()不管是否读到有效字符,遇到结束符回车都会结束。

代码:

        String i = scanner.next();//遇到有效字符才会结束

        System.out.println(i);

        String s = scanner.nextLine();//空格

        System.out.println(s);

4、next()和nextInt()读到有效字符后不会将结束符擦除,而nextLine()是会将结束符擦除的.

效果如下图所示:

-1(第一种:next()):注:以下效果图中只显示了next()的案例,将nextInt()缩写了.

-2(第二种:nextLine()): 

(4) next()和nextInt()读到有效字符后不会将结束符擦除,而nextLine()是会将结束符擦除的。

案例:

        String next = scanner.next();//中间遇到空格,会自动将后面的字符擦除掉,只输出空格前的字符

        System.out.println(next);

        String nextLine = scanner.nextLine();//会将结束符擦除

        System.out.println(nextLine);

        String nextLine2 = scanner.nextLine();

      System.out.println(nextLine2);

5、同一个Scanner对象,不能先录入int,再录入String值,会出异常.

//解决方案一、a:使用两个Scanner对象分别接收即可.

//解决方案二、/b:将第一个值,使用String类型,后转换为int即可.

(5) 同一个Scanner对象,不能先录入int,再录入String值,会出异常。

代码:

        int i = scanner.nextInt();

      Scanner scanner2 = new Scanner(System.in);

      String s = scanner2.nextLine();

      System.out.println(i + ":" + s);

//将String类型的数值,转换化为in类t型

        String num1 = scanner.nextLine();

        String num2 = scanner.nextLine();

        int num3 = Integer.valueOf(num1);

        System.out.println(num3 + ":" + num2);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342