【问题分析】

必要的知识: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(); 没有输入就自动跳过的问题?相关推荐

  1. java nextline没有停住_java中使用nextLine(); 没有输入就自动跳过的问题?

    我昨天在做题(最长上升子序列)的过程中遇到一个问题,第一个数 N 表示后面有多少组测试数据,但是当我输入 N 之后,for 循环里的 nextLine(); 并没有让我输入,就跳过并且输出了 问题分析 ...

  2. Java中IO流,输入输出流概述与总结(转载自别先生文章)

    Java中IO流,输入输出流概述与总结 总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都 ...

  3. 在java中通过过键盘输入_java中从键盘输入

    控制台输入数据 1.1 主方法的形式参数 在 Java 中利用 main(Str... Java中获取键盘输入值的三种方法 2012-11-13 00:00比特网悠虎关键字:Java 程序开发过程中, ...

  4. java输入一个字符串_在java中如何用键盘输入一个数,字符,字符串

    一,利用 Scanner 实现从键盘读入integer或float 型数据 1 import java.util.*;2 public classtest {3 public static voidm ...

  5. Java中如何通过键盘输入一个数组以及创建方式

    Java中数组创建 方式一: int[] arr = new int[3]; 方式二: int[] arr = new int[]{1,2,3,4,5}; 方式三: int[] arr = {1,2, ...

  6. java中,如何实现输入一个正整数,并将这个数字反转输出,比如输入123,输出321

    如题所示,在java中如何实现输入一个正整数,然后将这个正整数反着输出来,代码如下: public static void test7(){System.out.println("请输入一个 ...

  7. Java中IO流,输入输出流概述与总结

    1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都是抽象类InputStream(字节输入流),或者抽象类Reader(字符输入流)的 ...

  8. Java中,Scanner键盘输入如何赋值给char类型变量

    初学java的人都知道,通过Scanner键盘输入可以变量赋不同类型的值,int,float,double等都对应这不同的next方法,但是今天我发现Scanner不太好直接给char类型赋值,如下图 ...

  9. Java中I/O(输入/输出)的操作

    Java的I/O技术可以将数据保存到文本文件.二进制文件甚至是ZIP压缩文件中,以达到永久性保存数据的要求. 1.流概述 流是一组有序的数据序列,根据操作的类型,可分为输入流和输出流两种.I/O(In ...

最新文章

  1. insert数据时,获取插入数据的id
  2. 使用JSTL报错:items does not support runtime expre...
  3. Intel Realsense D435 获取摄像头option参数值 get_option()
  4. 解决 Visual Studio 2019 无法打开wpf设计器问题
  5. QUIC实战(五) 使用nginx quic开发分支部署支持HTTP3 的NGINX
  6. 【MFC系列-第9天】MFC消息映射机制的原理
  7. 信息学奥赛一本通C++语言——1038:苹果和虫子
  8. php选择数据表,PHP SQL,一次从3个表中选择相应的数据?
  9. 全国计算机机专业考试试题,2010全国非计算机专业一级考试试题
  10. 趣头条,或许是下一个小巨头
  11. python常见的运算符有哪些_python基础知识--4常见运算符
  12. Python天天美味(4) - isinstance判断对象类型
  13. 用Flink取代Spark Streaming,知乎实时数仓架构演进
  14. 京东万能转链API接口 含商品信息优惠券转链 京东线报如何转链?
  15. 傅里叶变换及其实现(MATLAB)
  16. 淘宝客微信机器人搭建教程分享
  17. html中创建圆点列表符号,圆点项目符号
  18. android 验证 号码,本机号码校验
  19. 【涨粉10万】CSDN年度总结——再见2021
  20. 艾瑞泽5无损换挡机构

热门文章

  1. 人生这道题,要该怎么做?
  2. 贷款买车后,有多少人后悔了?
  3. 你试过一个人旅游吗?去了哪里?
  4. 什么样的生意一本万利?
  5. 有钱男人更看重女人的美貌还是年轻?
  6. 成功的捷径,学会这一点,赚钱很容易
  7. 人跟人的格局真的是不一样的
  8. 寻找点赞所需的URL
  9. 命令查看IPV6的IP,路由,邻居信息
  10. 使用trycatch获取异常问题