java:nextInt()和nextLine()一起使用出错
2019-02-17 01:49:18来源:博客园 阅读 ()
今天遇到一个很奇怪的事情,日常刷题中,遇到一个很简单的题:
(不想看我多逼逼只想知道为什么会出错看最后)
题目:
题目描述 description
现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。 编写一个函数input,用来输入一个学生的数据记录。 编写一个函数print,打印一个学生的数据记录。 在主函数调用这两个函数,读取N条记录输入,再按要求输出。 N<100
遇到这个题,对于用c语言的同学,构建结构体,加以顺序表,输入格式也有scanf函数控制轻松解决。
但是用java来做,就需要考虑,先将这一行数据转化为独立的数据,由于java里面没有类似scanf(“%d:::::%d”,&n,&m)这样格式输入的函数。
先将一行数据转化为可以识别的单个数据:
1 import java.util.Scanner; 2 3 public class Test { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.in); 6 String s = sc.nextLine(); 7 String ss[] = s.split(" "); 8 for (String x : ss) { 9 System.out.println(x); 10 } 11 } 12 }
然后我发现这样连着使用in.nextInt()和in.nextLine()(和in.next()使用未发现问题)
会出现以下情况:
这时我才发现第13行代码没有发生作用(如果是这样输入:1 a100 zhblue 70 80 90 在一行输入情况又会正常)
然后我百度发现:
跳到这个位置:
问题分析:nextLine()会把nextInt(),next(),nextDouble(),nextFloat()的结束换行符作为字符串读入,进而不需要从键盘输入字符串nextLine便已经转向了下一条语句执行。
解决办法 : 在每一个nextInt(),next(),nextDouble(),nextFloat()后都加一个nextLine()语句,将被next()去掉的Enter过滤掉。
比如图下(在第10行添加了一句in.innextLine();
这道题的源码:
1 import java.util.ArrayList; 2 import java.util.Scanner; 3 4 public class Main { 5 public static void main(String[] args) { 6 Scanner in = new Scanner(System.in); 7 int n=in.nextInt(); 8 in.nextLine(); 9 ArrayList<a> p=new ArrayList<a>(); 10 for (int i=0;i<n;i++){ 11 String pdd=in.nextLine(); 12 String ss[]=pdd.split(" "); 13 a temp=new a(ss[0],ss[1],ss[2],ss[3],ss[4]); 14 p.add(temp); 15 } 16 for(a d:p){ 17 System.out.println(d.n+","+d.name+","+d.a1+","+d.a2+","+d.a3); 18 } 19 } 20 static class a{ 21 public a(String n, String name, String a1, String a2, String a3) { 22 this.n = n; 23 this.name = name; 24 this.a1 = a1; 25 this.a2 = a2; 26 this.a3 = a3; 27 } 28 String n; 29 String name; 30 String a1; 31 String a2; 32 String a3; 33 } 34 35 }
但是还有一事:为什么java中不弄一个格式化输入,就像c中scanf(“%d:::::%d”,&n,&m)这样,就不需要将一行数据转成String数组了,希望有大佬能给我解答,或者有更好的办法欢迎讨论。
原文链接:https://www.cnblogs.com/lzy321/p/10367884.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash