我是靠谱客的博主 彩色樱桃,最近开发中收集的这篇文章主要介绍输入输出遇到的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、Scanner类

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

当我们输入数字的时候,因为nextInt()只会以空格和回车符结束,但是此时按下了回车,nextLine()会读取回车符(next()不会读取回车符),又因为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();

最后

以上就是彩色樱桃为你收集整理的输入输出遇到的问题的全部内容,希望文章能够帮你解决输入输出遇到的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部