本节说明java的交互scanner输入是怎么用的 然后是一些进阶用法
比如说python的输入 对吧 input
比如常写的 a = list(map(int, input.split(‘ ’))) // 意思就是把输入按照空格隔开 然后把int函数映射到每个输入上 一般用在那个竞赛题要自己输入的地方 这样的
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就可以查看
比如
这里返回的是一个布尔值 所以没有写结果等于true还是false再输出
------------------------------------------
下面看一下next和nextLine的区别
这两个的输出是不一样的 比如同样输出hello world 即中间有个空格
可以看到 next函数是只输出了hello 而 nextLine函数是完整的输出了
这是因为
主要在于nextLine返回的是回车键之前所有的字符 关闭是一个好习惯 比如sql啥的 我本科开发项目 有项目就没有这个 然后运行久了 内存老溢出
比如上面这个代码 假设输入10.1 那么输出为
其实应该感到奇怪 就是hasNextxxxx这种是怎么判断的对吧
比如下面这个代码
那么他的输出是什么呢
首先如果输入了10.1 那么会输出字符串10.1 关键来了 程序还会让你继续输入 这是为什么呢?很奇怪是吧
再比如这段代码 会怎么输出
控制台会等你输入完再输出 请输入字样 这是因为
scanner 可以理解为 等你输入完 hasNext也会获得一个输入值 只不过 这个值是布尔值 输入完后 scanner标识符会向后移 然后输出结果
比如上面这个 假设在控制台输入一个值 那么会输出flag为true 然后直接输出值
再比如这个
那么在控制台输入值 会直接得到一个字符串值
下一节讲java的一些控制结构 其实主要问题是 还是要看下这个方法的源码 是比较好的