nextline函数_Java中的nextline()函数与next()问题
【写在前面】
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()问题相关推荐
- java中的string函数_java中string.trim()函数的作用实例及源码
trim()的作用:去掉字符串首尾的空格. public static void main(String arg[]){ String a=" hello world "; Str ...
- java调用函数_Java中如何调用函数和自定义函数
展开全部 1.调用函数方法:对象名.函数名 需要实例化对象,后调用 2.自定义32313133353236313431303231363533e4b893e5b19e31333365663433函数: ...
- java有没有回调函数_Java中的回调函数 - wangjianme的个人空间 - OSCHINA - 中文开源技术交流社区...
Java代码的回调函数经常由框架或是系统定义,由程序开发人员填充. 它的最主要特点是即定义了调用的规范同时又非常的灵活. 回调函数有些类似于观察者模式,它们的区别在于:观察者模式返回的参数为Event ...
- scala 函数中嵌套函数_Scala中的嵌套函数 用法和示例
scala 函数中嵌套函数 Scala中的嵌套函数 (Nested functions in Scala) A nested function is defined as a function whi ...
- oracle中转换函数,Oracle中的转换函数
Oracle中的转换函数有三个,分别为to_char(),to_date(),to_number() 1.to_char()的用法 格式化当前的日期时间 select sysdate,to_char( ...
- java中原生方法_java中原生(native)函数的用法
1.原生(Native)函数的概念 在Java程序中,可以使用由其他编程语言实现的函数,这种函数,在Java中被称之为 原生(Native)函数. 2.在Java程序中使用原生函数的优缺点 1)优点 ...
- java random构造方法_Java中的Random()函数及两种构造方法
Java中存在着两种Random函数: java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是 ...
- java开根号函数_Java中真的只有值传递么?
原创: ITwalking 转载于公众号[ 编程大道] (本文非引战或diss,只是说出自己的理解,欢迎摆正心态观看或探讨) 回顾值传递和引用传递 关于Java是值传递还是引用传递,网上有不一样的说法 ...
- java nextline没有停住_java中使用nextLine(); 没有输入就自动跳过的问题?
我昨天在做题(最长上升子序列)的过程中遇到一个问题,第一个数 N 表示后面有多少组测试数据,但是当我输入 N 之后,for 循环里的 nextLine(); 并没有让我输入,就跳过并且输出了 问题分析 ...
最新文章
- 20步打造最安全的Nginx Web服务器
- 手动配置linux(centos)的IP地址
- 用 Win7,硬件也有新天地
- vuex mutations_Vuex 的基本知识总结
- 动态添加table表格内容,填充审批意见。
- 【老孙随笔】想学程序设计,先学人生设计!
- java BorderLatout_浅谈java的BorderLayout的使用
- Kite的学习历程SpringCloud之Seata安装
- DBSCAN 聚类算法
- c语言如何找一个数的因数,如何用C语言找完数并显示因数?(编译器为Dev-c)
- EPLAN 电气工程图纸
- 工欲擅其事必先利器,磨刀不误砍柴工
- methods: 68368 65536
- 如何嫁给年入百万的阿里人?
- html的五角星怎么打出来,五角星符号怎么打出来?
- MFC修改界面图标时,已导入.ico文件,但是程序运行后,界面不显示更新后的新图标
- java如何保证mq一定被消费,RabbitMQ如何保证队列里的消息99.99%被消费?
- Python 常用的标准库以及第三方库有哪些?
- 是时候复习一下响应式设计了
- 蓝桥杯嵌入式国赛模块训练之数码管
热门文章
- Storm 分布式远程过程调用(DRPC)
- NOIP2017提高组复赛游记
- ucinet常用分析路径
- php天花板好吗,天花板的钢筋都露出来了,还以为不要紧!老公后怕:安全隐患太大...
- python界面设置中文_Python Spyder 怎么操作才能打开用户设置的界面(如图),python spyder教程中文...
- 如何设计优秀的应用图标?
- [CCPC2020 绵阳]G. Game of Cards
- 关闭nginx的日志记录
- 【微软漏洞分析】Windows-Research-Kernel-WRK 代码分析 安全例程(2) 令牌和安全描述符
- 四六级作文——说明文