Java Scanner类从控制台读取输入

java.util.Scanner

创建Scanner类的对象,以获取来自 System.in 的输入:

Scanner input = new Scanner(System.in);

读取数据前先使用 hasNextXxx() 方法判断是否存在数据输入,不同数据类型方法不同:

input.hasNext();
input.hasNextByte();
input.hasNextShort();
input.hasNextInt();
input.hasNextLong();
input.hasNextDouble();
input.hasNextLine();

使用 nextXxx() 方法读取输入,可以用空格或回车键作为分隔符:

input.next();
input.nextByte();
input.nextShort();
input.nextInt();
input.nextLong();
input.nextDouble();
input.nextLine();

注意:没有 nextChar() 方法

next()和nextLine()的区别:

  1. next()

    • next() 读取分隔符前的一个字符串,不能得到带有空格的字符串;
    • 一定要读取到有效字符后才可以结束输入;
    • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符,对输入有效字符之前遇到的空白,next() 方法会自动将其去掉;
  2. nextLine()

    • nextLine()读取一行文本,即一按下回车键为结束标志;
    • 可以获得空格;

实例说明
next() nextByte() nextShort() nextInt() nextLong() nextDouble() nextLine() 都称为“令牌读取方法”,因为他们会读取用分隔符分隔开的令牌。默认情况下,分隔符是空格,可以使用useDelimiter(String regex) 方法设置新的分隔符模式。

nextLine()读取一个以行分隔符结束的行,行分隔符是由系统定义的,从键盘输入以回车键结束,对应\n 字符。

如下代码执行:

Scanner input = new Scanner(System.in);
int intValue = input.nextInt();
String line = input.nextLine();
  • 如果输入34,空格,567,回车,会发生什么情况呢?
    intValue34line567 (空格,567)。
  • 如果输入34,回车,567,回车,会发生什么情况呢?
    第一个回车处就会结束,将会得到intValue34line是一个空字符串。因为令牌读取方法nextInt()读取34,然后在行分隔符处停止,nextLine()读取到行分隔符结束处,所以是空的。

String类使用 split 方法分隔字符串,使用 trim() 方法去除首尾空白

  • split 方法

    String s = "sfsdafd   adfdsaf          adf  af";
    String[] strs = s.split("\\s+");  //以空白分隔字符串
    for(int i = 0; i < strs.length; i ++){
    System.out.println(strs[i]);
    }

    输出结果:

    sadfssdg
    adfs
    sf
  • trim() 方法

    String s = "    sadfssdg     adfs   sf    ";
    s  = s.trim();
    System.out.println(s);

    输出结果:

    sadfssdg adfs sf

String中 length 是属性不是方法,不需要加括号。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值