java 的readLine()怎么进行的

importjava.io.*;publicclassTest3{publicstaticvoidmain(Stringargs[]){Strings;InputStre... import java.io.*;
public class Test3 {
public static void main(String args[]) {
String s;
InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(ir);
System.out.println("Unix系统:ctrl-d或者ctrl-c退出"+"\nWindows系统:ctrl-z退出");

try {
s=in.readLine();
while (s!=null){
System.out.println("Read:"+s);

s = in.readLine();//????
}
in.close();
}
catch(IOException e){
e.printStackTrace();
}
}
}
为什么删掉 while中的s = in.readLine();后会无限输出
展开
 我来答
千锋IT教育 2022-09-27
展开全部
不是的,两者有很大的差别。语法方面JavaScript的基本语法和对象体系,是模仿Java而设计的。但是,JavaScript没有采用Java的静态类型。正是因为JavaScript与Java有很大的相似性,所以这门语言才从一开始的LiveScript改名为JavaScript。基本上,JavaScript这个名字的原意是“很像Java的脚本语言”。千锋官网每日更新最新软件开发基础知识内容,巩固日常学习中的基础技能。更有免费的软件开发视频教程帮助学员快速学习。 千锋教育就有线上免费的软件开发公开课,。在JavaScript语言中,函数是一种独立的数据类型,以及采用基于原型对象(prototype)的…
塔駡德
高粉答主

推荐于2019-08-08 · 关注我不会让你失望
知道答主
回答量:46
采纳率:0%
帮助的人:1.5万
展开全部

readLine()是读取流读数据的时候用的,同时会以字符串形式返回这一行的数据,当读取完所有的数据时会返回null。

代码示例:

public static void main(String[] args) throws Exception { 

//获取读取流 3         

FileReader reader = new FileReader("C:\\Users\\杨华彬\\Desktop\\test.txt"); 

BufferedReader br = new BufferedReader(reader); 

while (br.readLine() != null) { 

//注意这里输出的是readLine(),while循环中的和输出中的readLine()方法被掉了两次,所以会隔行读取。 

System.out.println(br.readLine()); 

}

//关闭读取流

br.close();

reader.close();14     

}

拓展资料:

使用readLine()一定要注意:

  • 读入的数据要注意有/r或/n或/r/n

  • 没有数据时会阻塞,在数据流异常或断开时才会返回null

  • 使用socket之类的数据流时,要避免使用readLine(),以免为了等待一个换行/回车符而一直阻塞

参考资料:菜鸟教程

千锋IT教育
2022-09-27 广告
不是的,两者有很大的差别。语法方面JavaScript的基本语法和对象体系,是模仿Java而设计的。但是,JavaScript没有采用Java的静态类型。正是因为JavaScript与Java有很大的相似性,所以这门语言才从一开始的Live... 点击进入详情页
本回答由千锋IT教育提供
千锋教育
2015-12-15 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
readLine()是读取流读数据的时候用的,当读到换行标记'\n'、'\r'(回车)时,会跟着换行,同时会以字符串形式返回这一行的数据,当读取完所有的数据时会返回null
具体用法如下:
public static void readFileByLines(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
try {
System.out.println("以行为单位读取文件内容,一次读一行");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
//一次读一行,读入null时文件结束
while ((tempString = reader.readLine()) != null) {
//把当前行号显示出来
System.out.println("line " + line + ": " + tempString);
line++;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dyf19118
推荐于2017-09-19 · TA获得超过320个赞
知道小有建树答主
回答量:179
采纳率:0%
帮助的人:158万
展开全部
遇到问题多看看JDK的帮助文档,看看readline的使用方法,返回值。
public String readLine()
throws IOException

Reads a line of text. A line is considered to be terminated by
any one of a line feed ('\n'), a carriage return ('\r'), or a carriage return
followed immediately by a linefeed.

Returns:
A String containing the contents of the line, not including any
line-termination characters, or null if the end of the stream has been reached
因为你首先输入了一行字符串,然后输入流读取到这个字符串后s!=null为true,while循环永远不会结束。再加了一个s= in.readline()以后。系统先输出之前你输入的一行字符串,然后陷入阻塞状态,然后等你再输入一行。这个时候如果不想继续了就按ctrl+c结束循环。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
萧宇1991
2013-08-26
知道答主
回答量:53
采纳率:0%
帮助的人:12.5万
展开全部
如果你加上s = in.readLine();之后就说明你还要输入,所以线程就停在这里。当你把s = in.readLine();删了之后那么s就一直不会为空所以就一直循环。你在System.out.println("Read:"+s);之后加上s=null;把s = in.readLine();删掉 删掉就可以了。希望对你有用吧,不懂可以追问啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TomHeaven
2013-08-26 · TA获得超过189个赞
知道小有建树答主
回答量:63
采纳率:0%
帮助的人:80.1万
展开全部
  删掉 while 循环中的 in.readLine() 之后 while 变成死循环了, 在 while 中 s 的值不会改变,也就永远不可能满足 s == null 的循环退出条件,所以 println 语句在死循环中无限执行。
Java 中 readLine() 读到回车或者文件结束符就会终止,如果没有读到内容会返回 null 值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式