黑马程序员技术交流社区
标题:
有疑惑
[打印本页]
作者:
学习代码
时间:
2014-4-2 20:43
标题:
有疑惑
import java.io.*;
class Demo
{
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("ZhuanHuan.java");
LineNumberReader lin = new LineNumberReader(fr);
char[] arr = new char[1024];
while(true)
{
int s= lin.read(arr);
if(s==-1)
break;
else
System.out.print(lin.getLineNumber()+";;"+new String(arr,0,s));//为什么带着行号打印却没有行号呢?为什么啊
}
lin.close();
}
}
复制代码
谢谢
作者:
Engle
时间:
2014-4-2 21:33
你的方法是全部都读到你的char缓冲区了,还怎么打印行号?
你的一行一行的读:
FileReader fr = new FileReader("Road.java");
LineNumberReader lin = new LineNumberReader(fr);
char[] arr = new char[1024];
// while(true)
// {
// int s= lin.read(arr);
// if(s==-1)
// break;
// else
// System.out.print(lin.getLineNumber()+";;"+new String(arr,0,s));//为什么带着行号打印却没有行号呢?为什么啊
//
// }
String line = null;
while ((line =
lin.readLine()
) != null) {
System.out.println("Line " + lin.getLineNumber() +": " + line);
}
lin.close();
这样就行了!
作者:
papercup
时间:
2014-4-2 21:40
本帖最后由 papercup 于 2014-4-2 21:42 编辑
给你改了一下:
import java.io.*;
class Hanghao
{
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("e:\\MainDemo.java");
LineNumberReader lin = new LineNumberReader(fr);
char[] arr = new char[1024];
while(true)
{
String s= lin.readLine(); //这里改为一次读一行。
if(s==null)
break;
else
System.out.println(lin.getLineNumber()+" "+s) //读完一行后打印出来。
}
lin.close();
}
}
复制代码
作者:
yujiangjiao
时间:
2014-4-2 22:12
System.out.print(lin.getLineNumber()+";;"+new String(arr,0,s));//为什么带着行号打印却没有行号呢?为什么啊
你是想通过这句话打印出行号和一行语句,但是上面的代码int s= lin.read(arr); 是将数据读取到数组,new String(arr,0,s)是将整个数组中从角标0到s的数据转换成字符串,所以没有行号。
因为LineNumberReader 是BufferedReader的子类,可以用LineNumberReader 的readLine()方法获取一行加上行号
修改代码如下:
import java.io.*;
class Demo
{
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("Test.java");
LineNumberReader lin = new LineNumberReader(fr);
while(true)
{
String s= lin.readLine();//用readLine()方法读取一行
if(s==null)
break;
else
System.out.println(lin.getLineNumber()+";;"+s);//为什么带着行号打印却没有行号呢?为什么啊
}
lin.close();
}
}
复制代码
作者:
z1342802487
时间:
2014-4-2 22:26
getLineNumber()获取
当前
行号,你的程序好像没有readLine,而是读到字节数组了,你的代码看上去也不到1kb,所以你的缓冲区没有用完,getLineNumber返回的应该是倒数第二行的行号。你试一下是不是。
带行号的下面是我写的
import java.io.*;
public class Demo
{
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("swap.java");
LineNumberReader lin = new LineNumberReader(fr);
String str = null;
while(lin.readLine()!= null)
{
str=lin.readLine();
System.out.println(lin.getLineNumber()+str);//为什么带着行号打印却没有行号呢?为什么啊
}
lin.close();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2