通俗易懂讲解Scanner的next()方法和hasnext()方法

next()方法和nextLine()方法的本质作用是移动指针,hasNext()方法和hasNextLine()方法的作用是判断当前指针指向的有没有内容,有就返回true,没有就阻塞

public class Main {
    public static void main(String[] args) {
        Scanner scanner  = new Scanner(System.in);
        boolean a = scanner.hasNext();
        System.out.println(a);
        String b = scanner.next();
        System.out.println(b);
    }
}
    Scanner scanner  = new Scanner(System.in);

这行代码就是new一个输入的对象,Java是面向对象的语言,啥操作都要对象来执行,因此这里要new一个对象出来,参数是System.in说明你需要在控制台输入数据。但执行这一句时,并不会去让你输入数据,因为这里仅仅是声明了一个对象。真正要你去控制台输入数据是这个对象调用hasNext()方法或者next()方法。

    boolean a = scanner.hasNext();

当代码运行完这一句的时候,也就是当对象调用hasnext()方法时,你需要在IDEA的控制台输入数据了,输入之后,这些数据保存在一个缓冲区中,这个缓冲区的开始位置就是这个scanner.hasNext() ,如果这个缓冲区当前指针指向的地方有数据,那么这个方法就会返回true,如果没有数据,注意注意它不会返回false,而是阻塞!!!一定要记住,不会返回false,不会返回false,而是阻塞,而是阻塞

    String b = scanner.next();

注意注意,这里的next()方法和nextLine()方法不一样,next()方法是碰到空格,回车,就会执行这个代码,返回指向的内容,然后把指针指向下一个有数据的位置,相当于在控制台中碰到了一个空格,就执行了一次回车操作。然而nextLine()这个方法,它只认回车,不认空格。只有回车时,才相当于执行了nextLine()方法,然后返回你输入的这一行内容,然后把指针指向下一行位置

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Scanner类是Java中常用的输入数据的工具类,它提供了很多方法来获取不同类型的数据。其中,hasNext()方法是一个非常重要的方法,它可以判断输入流中是否有下一个元素。 hasNext()方法返回一个boolean类型的值,如果输入流中还有下一个元素,则返回true;否则返回false。在使用hasNext()方法时,需要注意以下几点: 1. hasNest()方法必须在读取元素之前调用,否则会抛出NoSuchElementException异常。 2. hasNest()方法会阻塞程序,直到输入流中有下一个元素或者输入流结束。如果输入流结束,hasNext()方法将返回false。 3. hasNest()方法默认使用空格和回车符作为分隔符,因此如果输入流中有空格或回车符,hasNext()方法将认为输入流中还有下一个元素。 4. 如果输入流中有多个元素,hasNext()方法只会返回第一个元素,不会读取所有元素。 下面是一个使用hasNext()方法读取整数的例子: ```java import java.util.Scanner; public class TestScanner { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入整数:"); if (scanner.hasNextInt()) { int num = scanner.nextInt(); System.out.println("你输入的整数是:" + num); } else { System.out.println("输入的不是整数!"); } scanner.close(); } } ``` 在这个例子中,我们首先创建了一个Scanner对象,并使用hasNextInt()方法判断输入流中是否有下一个整数。如果有,就使用nextInt()方法读取该整数并输出;否则,输出“输入的不是整数!”。最后,关闭Scanner对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值