java中使用nextLine(); 没有输入就自动跳过的问题?
【问题分析】
必要的知识:in.nextLine();不能放在in.nextInt();代码段后面
否则in.nextLine();会读入"\n"字符,但"\n"并不会成为返回的字符
因为nextInt();接收一个整型字符,不会读取\n,nextline();读入一行文本,会读入"\n"字符,但"\n"并不会成为返回的字符
那么问题就在于for循环中的三个输入等待中,前两个是字符串(学校名称、校长姓名)最后一个是整型(建校时间),
在第一次循环时并没有什么问题,但当循环进入第二次时,第一次循环输入的班级数目(假设为2),我们输入的是"2\n",
nextInt();扫描了2这个值并返回(没有读取"\n"字符),而第二次循环一开始的nextLine();接收了上一个循环最后输入的"\n"字符,
然而"\n"并不会成为返回字符,所以看起来有一种“跳过”的假象。
【解决方案】
接下来我们来看看解决方案
方案1:(不推荐)
将Scanner in = new Scanner(System.in);放入循环体,因为只循环一次的话并不存在问题,所以可以解决“跳过”的问题。
方案2:
解决在nextInt();后的nextLine();会接收"\n"的问题,可以在他们中间加一个in.nextLine();语句来接收这个"\n"。
方案3:(可接收含空格的字符串,后文有说)
必要的知识:
next();这个函数会扫描从有效字符起到空格,Tab,回车等结束字符之间的内容并作为String返回。
nextLine();这个函数在你输入完一些东西之后按下回车则视为输入结束,输入的内容将被作为String返回。
next();这个函数与之不同在于,next();什么都不输入直接敲回车不会返回,而nextLine()即使不输入东西直接敲回车也会返回。
再举个例子,输入" abc def gh\n",next();会返回abc,而nextLine();会返回 abc def gh\n,我们看到的是 abc def gh
//附上代码
import java.util.*;
public class testScanner{
public static void main(String[]args){
Scanner in = new Scanner(System.in);
String str = in.nextLine();
//String str = in.next();可自行将上一行代码更换为此行代码尝试
System.out.println(str);
}
}
所以把代码中的nextLine();换成next();便可以解决“跳过”问题。(因为next();不把上个循环的最后一个"\n"看成有效字符)
转载于:https://www.cnblogs.com/1020182600HENG/p/6564795.html
java中使用nextLine(); 没有输入就自动跳过的问题?相关推荐
- java nextline没有停住_java中使用nextLine(); 没有输入就自动跳过的问题?
我昨天在做题(最长上升子序列)的过程中遇到一个问题,第一个数 N 表示后面有多少组测试数据,但是当我输入 N 之后,for 循环里的 nextLine(); 并没有让我输入,就跳过并且输出了 问题分析 ...
- Java中IO流,输入输出流概述与总结(转载自别先生文章)
Java中IO流,输入输出流概述与总结 总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都 ...
- 在java中通过过键盘输入_java中从键盘输入
控制台输入数据 1.1 主方法的形式参数 在 Java 中利用 main(Str... Java中获取键盘输入值的三种方法 2012-11-13 00:00比特网悠虎关键字:Java 程序开发过程中, ...
- java输入一个字符串_在java中如何用键盘输入一个数,字符,字符串
一,利用 Scanner 实现从键盘读入integer或float 型数据 1 import java.util.*;2 public classtest {3 public static voidm ...
- Java中如何通过键盘输入一个数组以及创建方式
Java中数组创建 方式一: int[] arr = new int[3]; 方式二: int[] arr = new int[]{1,2,3,4,5}; 方式三: int[] arr = {1,2, ...
- java中,如何实现输入一个正整数,并将这个数字反转输出,比如输入123,输出321
如题所示,在java中如何实现输入一个正整数,然后将这个正整数反着输出来,代码如下: public static void test7(){System.out.println("请输入一个 ...
- Java中IO流,输入输出流概述与总结
1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都是抽象类InputStream(字节输入流),或者抽象类Reader(字符输入流)的 ...
- Java中,Scanner键盘输入如何赋值给char类型变量
初学java的人都知道,通过Scanner键盘输入可以变量赋不同类型的值,int,float,double等都对应这不同的next方法,但是今天我发现Scanner不太好直接给char类型赋值,如下图 ...
- Java中I/O(输入/输出)的操作
Java的I/O技术可以将数据保存到文本文件.二进制文件甚至是ZIP压缩文件中,以达到永久性保存数据的要求. 1.流概述 流是一组有序的数据序列,根据操作的类型,可分为输入流和输出流两种.I/O(In ...
最新文章
- insert数据时,获取插入数据的id
- 使用JSTL报错:items does not support runtime expre...
- Intel Realsense D435 获取摄像头option参数值 get_option()
- 解决 Visual Studio 2019 无法打开wpf设计器问题
- QUIC实战(五) 使用nginx quic开发分支部署支持HTTP3 的NGINX
- 【MFC系列-第9天】MFC消息映射机制的原理
- 信息学奥赛一本通C++语言——1038:苹果和虫子
- php选择数据表,PHP SQL,一次从3个表中选择相应的数据?
- 全国计算机机专业考试试题,2010全国非计算机专业一级考试试题
- 趣头条,或许是下一个小巨头
- python常见的运算符有哪些_python基础知识--4常见运算符
- Python天天美味(4) - isinstance判断对象类型
- 用Flink取代Spark Streaming,知乎实时数仓架构演进
- 京东万能转链API接口 含商品信息优惠券转链 京东线报如何转链?
- 傅里叶变换及其实现(MATLAB)
- 淘宝客微信机器人搭建教程分享
- html中创建圆点列表符号,圆点项目符号
- android 验证 号码,本机号码校验
- 【涨粉10万】CSDN年度总结——再见2021
- 艾瑞泽5无损换挡机构