ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

输入输出遇到的问题

2021-03-03 14:00:58  阅读:189  来源: 互联网

标签:nextLine 读取 遇到 int 输入输出 问题 回车符 BufferedWriter out


一、Scanner类

情景:
调用两个方法:nextInt()和nextLine(),第一行输入数字,直接回车,准备输入字符串,发现输入已经结束了。此时涉及到java中Scanner类nextInt之后用nextLine无法读取输入的问题:
原因:

当我们输入数字的时候,因为nextInt()只会以为空格和回车符结束,但是此时按下了回车,(next()不会读取回车符)但是nextLine()会读取回车符,又因为nextLine()以回车符结束,所以此时直接就跳过了我们输入,程序直接结束了。

解决办法:

1.可以再nextInt()方法后面多加一句nextLine()方法专门用来取出缓冲区中留下的空白符。
2.可以只用nextLine()方法,然后通过Integer类中的parseInt()方法解析成int数据。因为nextLine()方法会自动清理掉后边的空白符,这种方法就不会产生最开始那种错误了。

附:

next(),nextInt()和nextFloat():从有实际数据的地方开始读,看到空格符或回车符认为读取结束,但是不会读取空格符和回车符。
nextLine():调用就读取,第一个数据可以是空格符或回车符,以回车符结束,会读取空格符和回车符。

二、快输

BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter out=new BufferedWriter(new OutputStreamWriter(System.out));

//输入int型数据时,需要先输入字符串,以空格分隔,赋给字符串数组,再转成int型数据

String[] s=in.readLine().split(" ");
int n=Integer.parseInt(s[0]);
int m=Integer.parseInt(s[1]);


//BufferedWriter.writer(int c)方法写的不是一个int型数据,而是一个character型数据
//因此,在用BufferedWriter.writer写数据的时候,如果要写int型数据,可以先把它转成String型的数据,这样就可以直接写了。

out.write(n+""+"\n");//out.write(n+"\n");
out.write(m+"");


//BufferedWriter是缓冲输出流,意思是调用BufferedWriter的write方法时候。数据先从JVM内存写入到缓冲区里,并没有直接写到目的文件。
//所以,调用BufferedWriter的flush()方法时,会刷新,也就是把数据写入到目标文件。或者可以调用BufferedWriter的close()方法,该方法会在关闭该输入流之前先调用flush()方法,也会把数据写入到目标文件里。

out.flush();

标签:nextLine,读取,遇到,int,输入输出,问题,回车符,BufferedWriter,out
来源: https://blog.csdn.net/wcy8733996wcy/article/details/114309143

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有