本节说明java的交互scanner输入是怎么用的 然后是一些进阶用法

比如说python的输入 对吧 input 

比如常写的 a = list(map(int, input.split(‘ ’))) // 意思就是把输入按照空格隔开 然后把int函数映射到每个输入上 一般用在那个竞赛题要自己输入的地方 这样的 

java 交互式问答 java交互式输入_字符串

public class ScannerUse {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入: ");

        if (scanner.hasNext()){
            System.out.println("输入了 next:"+scanner.next());
        }

        // 用完关闭
        scanner.close();



    }
}

其实我们可以看一下他的源码:

按ctrl就可以查看

比如

java 交互式问答 java交互式输入_字符串_02

java 交互式问答 java交互式输入_字符串_03

这里返回的是一个布尔值 所以没有写结果等于true还是false再输出

------------------------------------------

下面看一下next和nextLine的区别

java 交互式问答 java交互式输入_System_04

java 交互式问答 java交互式输入_字符串_05

这两个的输出是不一样的 比如同样输出hello world 即中间有个空格

java 交互式问答 java交互式输入_java_06

java 交互式问答 java交互式输入_java 交互式问答_07

可以看到 next函数是只输出了hello 而 nextLine函数是完整的输出了

这是因为

java 交互式问答 java交互式输入_System_08

主要在于nextLine返回的是回车键之前所有的字符 关闭是一个好习惯 比如sql啥的 我本科开发项目 有项目就没有这个 然后运行久了 内存老溢出

java 交互式问答 java交互式输入_java 交互式问答_09

比如上面这个代码 假设输入10.1 那么输出为

java 交互式问答 java交互式输入_字符串_10

其实应该感到奇怪 就是hasNextxxxx这种是怎么判断的对吧

比如下面这个代码

java 交互式问答 java交互式输入_字符串_11

那么他的输出是什么呢

首先如果输入了10.1 那么会输出字符串10.1 关键来了 程序还会让你继续输入 这是为什么呢?很奇怪是吧

再比如这段代码 会怎么输出

java 交互式问答 java交互式输入_javase_12

控制台会等你输入完再输出 请输入字样 这是因为

scanner 可以理解为 等你输入完 hasNext也会获得一个输入值 只不过 这个值是布尔值 输入完后 scanner标识符会向后移 然后输出结果

java 交互式问答 java交互式输入_java 交互式问答_13

比如上面这个 假设在控制台输入一个值 那么会输出flag为true 然后直接输出值

再比如这个

java 交互式问答 java交互式输入_字符串_14

那么在控制台输入值 会直接得到一个字符串值

下一节讲java的一些控制结构 其实主要问题是 还是要看下这个方法的源码 是比较好的