nextLine() 和 next()、nextInt()、nextDouble()、nextFloat()方法读取问题解决

问题:

在使用nextLine()读取字符串的时候,有时候还没来得及输入就直接跳过了。

原因

  1. nextLine()方法会以回车符作为截止
    将回车符连同之前的所有字符组合成一个完整的字符串,交还给我们

  2. nextInt()方法会以回车符作为截止
    将回车符之前的所有字符 回车符留在消息队列中
    读时先判断读取的是否为数字
    如果不是则报InputMisMatchException(输入类型不匹配)
    将读到的每个数字组合成一个字符串,然后再转为一个数字,交换给我们

  3. next()用法和nextInt()一样 也不读取回车符
    如果有回车符 就从回车符后面开始
    next()、nextInt()、nextDouble()、nextFloat()在输入有效字符之后,将其后输入的空格键、Tab键或回车符等视为分隔符或结束符。

解决

  • 方式一:
    利用nextLine()方法读取一个空回车符
    input.nextLine();
    如果消息队列里面有回车符 可以加一个 input.nextLine();把消息队列清空,然后再去使用nextLine()方法

  • 方式二:
    利用next()方法读取字符串 next()方法读取方式与nextInt()一样 不读取回车符

  • 方式三:
    将所有输入用nextLine来读取
    使用parseInt将String转为Int
    int value = Integer.parseInt(password);
    如果将int转为String
    System.out.printIn(5+5+“5”+5+5);
    结果为10555(前面两个相加 遇到 “” 转为字符串)

  • 方式四:
    还可以新创建一个Scanner对象
    用这个对象专门的使用nextLine()方法 这样就不会混淆了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值