API常用类---Scanner

Scanner类

java.util.Scanner
JDK 1.5

public final class Scanner extends Object implements Iterator<String>

Scanner 类没有子类。
基本用法如下:

Scanner sc = new Scanner(System.in);
//System类下有一个静态变量in,InputStream 类型的
//public static final InputStream in;
//“标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。
//InputStream is = System.in;

解释:相当于Scanner包装了一个键盘录入的信息System.in,其好处是:

键盘录入的都是字符串,如果都用System.in来做,拿到的都是字符或者字节的数据,
但是Scanner有成员方法nextInt(),nextDouble()…,会自动把输入的数据转成其对应的字符串类型,或者int类型。

class Demo{
    //int类型的静态常量
    public static final int x =10;
    //Student类型的静态常量
    public static final Student s = new Student();
}
//int y = Dmeo.x;
//Student s = Demo.s;

Sacnner 类中的一个构造方法

public Scanner(InputStream source);
构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。

Scanner 成员方法

基本格式:
hasNextXxx();判断是否还有下一个输入项,其中Xxx可以是int ,Double 等。如果需要判断是否包含下一个字符串,则可以省略Xxx.
nextXxx();获取下一个输入项,其中Xxx可以是int ,double等。
默认情况下,Scanner使用空格,回车等作为分隔符。
public boolean hasNextXxx();判断是否是某种类型的元素
public Xxx nextXxx();获取该元素

注意:
InputMismatchException:输入的和想要的不匹配

//创建对象
Scanner sc = new Scanner(system.in);
//获取数据
if(sc.hasNextInt()){
    int x = sc.nextInt();
    System.out.println("x:"+x);

}else{
    System.out.println("您输入的数据有误");
}

常用方法

public int nextLine();获取一个int类型的值
public String nextLine(); 获取一个String类型的值

//先获取一个int值,在获取一个字符串
Int a = sc.nextInt();
String s = sc.nextLine();
System.out.println("a:"+a+",s:"+s);

出现的问题:先获取一个数值(int,double…)再获取一个字符串。
原因:数值输入后,回车(/r/n),这个会默认给字符串类型,而且不显示。
解决方法:
A;先获取一个数值后,再创建一个新的键盘录入对象获取字符串。(该方法相当于两个扫描器)。
B:把所有的数据都先按照字符串获取,然后要什么,就对应的转换成什么。(如何把一个字符串转成int或double类型等)。

int a = sc.nextInt();
Scanner sc2 = new Scanner(System.in);
String s = sc2.nextLine();
System.out.println("a:"+a+",s:"+s;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值