美文网首页
hasNext()的用法

hasNext()的用法

作者: 可以叫我小崔 | 来源:发表于2022-01-23 21:54 被阅读0次

    P

    1.迭代器原理

    1.当创建完成指向某个集合或者容器的Iterator对象时,这时的指针其实指向的是第一个元素的上方,即指向一个 空

    2.当调用hasNext方法的时候,只是判断下一个元素的有无,并不移动指针

    3.当调用next方法的时候,向下移动指针,并且返回指针指向的元素,如果指针指向的内存中没有元素,会报异常。

    4.remove方法删除的元素是指针指向的元素。如果当前指针指向的内存中没有元素,那么会抛出异常。

    2.用法

    Scanner scan=new Scanner(System.in);

    此句表示从控制台获取数据。

    scan.hasNext()表示是否有输入数据。

    while语句快表示当你输入数据的时候,就执行输出scan.next()

    所以只要你输入数据了,它就可以执行

    所以后台只是开了一块内存,一直未关闭,不算死循环。

    示例代码:

    运行结果

    首先hasnext()方法阻塞等待用户输入,输入“马云 强东 化腾”后按回车,hasnext()方法返回true进入循环,next()方法指针不断下移读取完后光标仍在闪烁,等待用户再次输入,无法跳出循环运行 System.out.println(“输入完成”)。

    结果解释

    调用hasnext()方法时如果当前scanner对象的迭代器(iterator)指针指向的下一个字符串值为空(不是判断当前指针指向的值,而是判断下一个值是否为空)则阻塞此方法等待用户输入,用户输入完后返回true,指针不会下移。如果当前scanner对象的迭代器(iterator)指针指向的下一个字符串值不为空则立即返回true,不会等待用户输入。

    hasnext()方法永远不会返回false,因为如果scanner对象的迭代器(iterator)指针的下一个字符串值为空时会阻塞此方法继续等待用户输入。

    解决方法:

    如果想要通过hasnext()方法结束输入需要用到hasnext带参数的一个重载方法。

    修改后的代码

    用“#”号当结束条件

    运行结果

    相关文章

      网友评论

          本文标题:hasNext()的用法

          本文链接:https://www.haomeiwen.com/subject/cbrvhrtx.html