关于Java接收键盘输入的问题

其实最开始我是觉得这个问题没什么好讲的,但在OJ中刷题的时候发现,很多题目不是不会做,而是搞不定输入输出,因此就又返回来仔细研究了一下 Java 的 Scanner 类,后来发现还是有很多需要注意的地方的,因此就在这里做个记录

先看一段代码

import java.util.Scanner;

/**
 * @author winston
 */
public class Test {
    public static void main(String[] args) {
        
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入:");
        
        int first = scanner.nextInt();
        System.out.println("first:" + first);
        
        int second = scanner.nextInt();
        System.out.println("second:" + second);
        
        System.out.println(String.format("你输入的数为:%d %d", first, second));
        
        int third = scanner.nextInt();
        System.out.println("third:" + third);
        
        while (scanner.hasNextInt()) {
            int a = scanner.nextInt();
            int b = scanner.nextInt();
            System.out.println(String.format("a:%d \t b:%d", a, b));
            System.out.println("OK");
        }
    }
}

第一种输入方式

在这里插入图片描述
最后程序并没有结束,至于原因请看这里

这种输入方式很常规,就是按照程序写的时候的顺序进行输入,很多人可能也都是这样用的,没毛病

第二种输入方式

在这里插入图片描述
可以发现,程序是在读取完我们当次的输入之后,再把结果一次性输出的

第三种输入方式

在这里插入图片描述
这里特意把 while 循环中要输入的数据和第三个数一起输入了,发现结果仍然是正常输出的

总结

从上面的结果可以看出,无论我们怎么输入,无论我们分多少行输入,nextInt() 都是按顺序获取我们的输入,每个数之间以空格作为分割的标志,next() 方法也是如此

注意:nextLine() 方法和 next() 方法是不一样的,nextLine() 是一次获取一行的输入,包括该行的空格

我们把程序所有的输出都去掉,只留一个 OK 的输出,再看一下
在这里插入图片描述
红色框框里的部分是不是和我们在一些OJ系统中看到的输入样例很像

由此我们得到启发:在处理一些OJ系统的输入时,我们只需牢记一件事,要读取多少个数,我们就写多少个 nextInt() 方法,当然需要循环的时候就将其放在循环里即可,而不要管什么换不换行,或者是使用 readLine() 之类的方法,然后再以空格分割

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值