【写在前面】

import Java.util.*;

Scanner in = new Scanner(http://System.in);

【出现的问题】

在循环中相连的nextLine();会出现第一个nextLine();跳过的问题.就像这个样子:

//部分代码

for(int i=0; i

System.out.println();

String name = in.nextLine();

System.out.printf("第%d所学校校长名字是?",(i+1));

System.out.println();

String master = in.nextLine();

System.out.printf("第%d所学校建校时间是哪一年?",(i+1));

System.out.println();

int time = in.nextInt();

sch[i] = new School(name,master,time);

}

【问题分析】

必要的知识: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(http://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(http://System.in);

String str = in.nextLine();

//String str = in.next();可自行将上一行代码更换为此行代码尝试

System.out.println(str);

}

}

所以把代码中的nextLine();换成next();便可以解决“跳过”问题。(因为next();不把上个循环的最后一个"\n"看成有效字符)

nextline函数_Java中的nextline()函数与next()问题相关推荐

  1. java中的string函数_java中string.trim()函数的作用实例及源码

    trim()的作用:去掉字符串首尾的空格. public static void main(String arg[]){ String a=" hello world "; Str ...

  2. java调用函数_Java中如何调用函数和自定义函数

    展开全部 1.调用函数方法:对象名.函数名 需要实例化对象,后调用 2.自定义32313133353236313431303231363533e4b893e5b19e31333365663433函数: ...

  3. java有没有回调函数_Java中的回调函数 - wangjianme的个人空间 - OSCHINA - 中文开源技术交流社区...

    Java代码的回调函数经常由框架或是系统定义,由程序开发人员填充. 它的最主要特点是即定义了调用的规范同时又非常的灵活. 回调函数有些类似于观察者模式,它们的区别在于:观察者模式返回的参数为Event ...

  4. scala 函数中嵌套函数_Scala中的嵌套函数 用法和示例

    scala 函数中嵌套函数 Scala中的嵌套函数 (Nested functions in Scala) A nested function is defined as a function whi ...

  5. oracle中转换函数,Oracle中的转换函数

    Oracle中的转换函数有三个,分别为to_char(),to_date(),to_number() 1.to_char()的用法 格式化当前的日期时间 select sysdate,to_char( ...

  6. java中原生方法_java中原生(native)函数的用法

    1.原生(Native)函数的概念 在Java程序中,可以使用由其他编程语言实现的函数,这种函数,在Java中被称之为 原生(Native)函数. 2.在Java程序中使用原生函数的优缺点 1)优点 ...

  7. java random构造方法_Java中的Random()函数及两种构造方法

    Java中存在着两种Random函数: java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是 ...

  8. java开根号函数_Java中真的只有值传递么?

    原创: ITwalking 转载于公众号[ 编程大道] (本文非引战或diss,只是说出自己的理解,欢迎摆正心态观看或探讨) 回顾值传递和引用传递 关于Java是值传递还是引用传递,网上有不一样的说法 ...

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

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

最新文章

  1. 20步打造最安全的Nginx Web服务器
  2. 手动配置linux(centos)的IP地址
  3. 用 Win7,硬件也有新天地
  4. vuex mutations_Vuex 的基本知识总结
  5. 动态添加table表格内容,填充审批意见。
  6. 【老孙随笔】想学程序设计,先学人生设计!
  7. java BorderLatout_浅谈java的BorderLayout的使用
  8. Kite的学习历程SpringCloud之Seata安装
  9. DBSCAN 聚类算法
  10. c语言如何找一个数的因数,如何用C语言找完数并显示因数?(编译器为Dev-c)
  11. EPLAN 电气工程图纸
  12. 工欲擅其事必先利器,磨刀不误砍柴工
  13. methods: 68368 65536
  14. 如何嫁给年入百万的阿里人?
  15. html的五角星怎么打出来,五角星符号怎么打出来?
  16. MFC修改界面图标时,已导入.ico文件,但是程序运行后,界面不显示更新后的新图标
  17. java如何保证mq一定被消费,RabbitMQ如何保证队列里的消息99.99%被消费?
  18. Python 常用的标准库以及第三方库有哪些?
  19. 是时候复习一下响应式设计了
  20. 蓝桥杯嵌入式国赛模块训练之数码管

热门文章

  1. Storm 分布式远程过程调用(DRPC)
  2. NOIP2017提高组复赛游记
  3. ucinet常用分析路径
  4. php天花板好吗,天花板的钢筋都露出来了,还以为不要紧!老公后怕:安全隐患太大...
  5. python界面设置中文_Python Spyder 怎么操作才能打开用户设置的界面(如图),python spyder教程中文...
  6. 如何设计优秀的应用图标?
  7. [CCPC2020 绵阳]G. Game of Cards
  8. 关闭nginx的日志记录
  9. 【微软漏洞分析】Windows-Research-Kernel-WRK 代码分析 安全例程(2) 令牌和安全描述符
  10. 四六级作文——说明文