java scanner 多行输入_从Scanner浅谈对象和官方库

在学习了基本的输出方法System.out.println()之后,我们终于在本周正式学习了一种基本的读取输入的方法:Scanner 对象

import java.util.Scanner;
public class MyClass{
  public static void main(String[] args){
     System.out.println("Please type in your name and press Enter");
     Scanner sc = new Scanner(System.in);
     String name = sc.nextLine();
     sc.close();
     System.out.println(name);
  }
}

当你写下了 Scanner sc = new Scanner(System.in);语句时,恭喜你成功创建了一个对象,真正接触到了所谓面向对象编程(OOP)中的 对象。这意味着你开始逐渐脱离所有编程语言中相似的部分,迈入面向对象编程所特有的领域。

import 语句

import 语句后所跟的是官方库的名字,一门编程语言的商业运营是否能成功很大程度上取决于其官方库。

所谓官方库,就是经过千锤百炼的常用功能的实现的集合。通过import语句,你能将这些设计精良的代码化为己用。

试想,如果没有官方库提供的Scanner类,一个Java程序员想要实现最基本的读取控制台输入功能就得从最底层的JVM指令开始学习,而且每个开发者实现的途径,实现的细节都有所区别,最终增加了语言的学习成本,也导致了工业开发的混乱和大量重复劳动。

Java语言的官方库是经过了成百上千次迭代优化的智慧结晶,研读经典的官方库代码(Java源码)

是Java开发中重要的学习方式。但是,研读官方库也不可走火入魔,过于底层和晦涩的东西不必深究。

Java API 官方文档收录了所有官方库的功能描述和使用方法,从现在开始,同学们可以逐渐尝试利用 API 文档(https://docs.oracle.com/en/java/javase/12/docs/api/index.html)来辅助学习了。

近期同学们用到的官方库大部分来自于啊 java.util包,可以用 import java.util.*;直接导入java.util包下的所有类

关键词 new

new表示后面调用的方法是一个类的构造器,由于还没有学习方法(method),这里不展开讲。同学们只要知道,Scanner sc = new Scanner(System.in);语句创建了一个名为 sc 的从标准输入流获取输入的 Scanner 对象(实例)。sc 被称为对象的引用,其实就是一个变量名。

如何操作一个对象的引用:点记法

一个对象包含属性和方法,可以通过点记法访问一个对象公有的属性和方法。以刚才创建的Scanner对象 sc为例,除了 nextLine()方法,我们可以通过点记法访问Scanner类型对象包含的其他方法,例如sc.hasNextLine();,一般的IDE在你打出点号之后都会有联想功能,自动列出该对象引用提供的所有的方法和属性( 也被称为域 ) 。

be526f54f063ccf1d63c7230f00afc92.png

我们可以使用ScannerSystem.out.println();来实现一个简单的Echo(回声)功能,这个功能会会将每行输入显示在output

public class MyClass{
  public static void main(String[] args){
     System.out.println("Echo");
     Scanner sc = new Scanner(System.in);
     while(sc.hasNextLine()){
     String com = sc.nextLine();
     System.out.println(com);
     }
     sc.close();
  }
}

通过按下ctrl+z来终止这个程序。

关于Scanner本身

在使用Scanner时,一个关键的问题是用什么样的数据类型来接受输入?

这个问题的答案取决于你调用了Scanner对象中的什么方法来读取输入。这时,就可以先查阅API 文档来解惑:

0b4d49af0c3db2f4980821d7ed3ddae8.png

c4b884235c04a4ccfdcfea023b6f8bad.png

这个问题牵涉到方法的返回值,现阶段同学们只要记住用 String 类型变量接受 nextLine()方法的结果即可,下表不用掌握。

Scanner sc = new Scanner(System.in);
sc.nextLine();String s = sc.nextLine();
sc.nextInt();Int i = sc.nextInt();
sc.nextDouble();double d = sc.nextDouble();
sc.nextLong();long l = sc.nextLong();

通过上表就可以发现,官方库的方法命名有一定规律,例如很容易推断出将输出中下一个输入作为byte类型读取的方法为   sc.nextByte();

记住关闭Scanner

在读取环节结束之后,记得调用 sc.close();

这篇文章只是粗浅的介绍了官方库和对象,同学们当作科普看就好。有任何Java学习相关的问题,或者找到了文章中的错误,可以在公众号后台给小猿留言哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值