今天这坑虽然很浅,但小明还是被装到了,明明就很简单😭,也找了一些前辈们的记录,这里小明给自己做个总结.(这个问题以前明明学过,结果依旧踩坑,以前只是知其然,现在要知其所以然)
问题如下:
总是没有第二次输入?(小明大憨批)
原因是因为小明输入1的时候按了回车键,nextInt()方法读取到数字就结束了,回车键被后一个方法读取,也就是nextLine()读取到上一个回车键(“\r”)以为输入结束,程序运行结束,所以没有第二次的用户输入(好吧,准确来说你的回车就是第二次(狗头)),其他的如next()方法(读到空格或回车结束,但是不管什么输入方法都要以回车键结束输入)及nextDouble()等方法后接nextLine()方法也会有同样问题.
nextLine()方法在前面就没有这个问题,就是上面讲的其会读取到回车键, 回车键不会结束下一个用户输入.
小明有话说:
方案1:
用nextInt()或nextFloat()这些用来读取特定类型的后面一定用next()方法(但是难免有些憨批就是不按你的要求输入非得搞个空格,也会导致一次输入没有第二次)
方案2:(推荐这个,因为用户真的会像这样输入的)
两次都用nextLine()方法,如果第一次要读取特定类型的数据时进行额外的操作(转换需要的类型,根据需求),因为不管什么输入方法都要以回车键结束输入(这话我说两遍了,注意结束输入,但不会读取),这样可以保证不管憨批怎么输入最终还是要按你想要的来(用户不会像你这样操作的(狗头)).
老明:小明,学废了没?
小明:废了废了,从入门到放弃(狗头).