Java Scanner的hasNext()方法

Java 关于Scanner的hasNext()方法的二三事

在编程笔试(或者某些场景)中,可能存在这样的需求:程序被要求接收不确定数量的一些字符串或者是数字,然后对接收的数据进行相关的处理。

假设这样一个场景,程序被要求接收不定数量的一些整数,然后计算这些数字的和。来看下面这个程序:

import java.util.Scanner;

public class Test {
   
    public static void main(String[] args) {
   
        Scanner s = new Scanner(System.in);
        int sum = 0;
        while(s.hasNextInt()) {
   
            sum += s.nextInt();
        }
        System.out.println(sum);
    }
}

我们的预期是:程序开始运行后,我们通过键盘在终端键入一行不定数量的整数,按下回车,程序紧接着打印出整数之和,然后结束运行。看上去似乎条例清晰,逻辑严密。不过程序实际运行的情况与我们的预期出现了一点偏差:在我们输入数据并按下回车之后,光标移动到了下一行,不过程序并没有打印出我们期待的结果,也没有结束运行,它“停下”了,或者说,它似乎在等待用户继续输入。如果此时你继续输入一行整数,然后按下回车,光标移动到下一行,情况不会发生变化。甚至你不输入任何内容,直接按下回车,情况仍然不会发生变化。但是如果你输入了一个浮点数或者是一个字符串,程序会紧接着打印出你想要的结果,然后结束运行。这很好理解,因为你输入的不是整数,循环会因此结束。

再来看这样一个场景,程序被要求接收不确定数量的一些字符串,然后将其逆序输出。来看下面这个程序:

import java.util
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值