黑马程序员技术交流社区
标题:
关于LineNumberReader的问题
[打印本页]
作者:
杨银川
时间:
2011-12-6 17:23
标题:
关于LineNumberReader的问题
我想自己编一个LineNumberReader,我想的是加一个计数器不就行了,但是没有叠加,下面是我写的代码,大家帮我看看吧!谢谢
package nineteen;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class MyLineNumberReaderDemo {
public static void main(String[] args) {
FileReader fr ;
try {
fr = new FileReader("D:\\test.java");
MyLineNumberReader mybr=new MyLineNumberReader(fr);
String len=null;
try {
while((len=mybr.MyLinenumberReadLine())!=null){
System.out.println(len);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
mybr.myclose();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class MyLineNumberReader{
private FileReader r;
public MyLineNumberReader(FileReader r){
this.r=r;
}
public String MyLinenumberReadLine() throws IOException{
StringBuilder sb=new StringBuilder();
int ch=0;
int num=1; //定义一个计数器
while((ch=r.read())!=-1){
if(ch=='\r'){
continue;
}
if(ch=='\n'){
int temp=num++;
return temp+sb.toString();
}
else{
sb.append((char)ch);
}
}
return null;
}
public void myclose() throws IOException{
r.close();
}
}
作者:
颜秉武
时间:
2011-12-6 17:37
package nineteen;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class MyLineNumberReaderDemo {
public static void main(String[] args) {
FileReader fr ;
try {
fr = new FileReader("D:\\test.java");
MyLineNumberReader mybr=new MyLineNumberReader(fr);
String len=null;
try {
while((len=mybr.MyLinenumberReadLine())!=null){
System.out.println(len);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
mybr.myclose();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class MyLineNumberReader{
private FileReader r;
public MyLineNumberReader(FileReader r){
this.r=r;
}
public String MyLinenumberReadLine() throws IOException{
StringBuilder sb=new StringBuilder();
int ch=0;
int num=1; //定义一个计数器
while((ch=r.read())!=-1){
if(ch=='\r'){
continue;
}
if(ch=='\n'){
num = num++;
return num+sb.toString();
}
else{
sb.append((char)ch);
}
}
return null;
}
public void myclose() throws IOException{
r.close();
}
}
复制代码
这样就可以了 你的是因为 num虽然每次都++;但是并没有赋予原来的值
所以每次循环 num的值都没有变,都是1,然后再次循环,所以每次行号都是1
作者:
颜秉武
时间:
2011-12-6 17:39
package nineteen;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class MyLineNumberReaderDemo {
public static void main(String[] args) {
FileReader fr ;
try {
fr = new FileReader("D:\\test.java");
MyLineNumberReader mybr=new MyLineNumberReader(fr);
String len=null;
try {
while((len=mybr.MyLinenumberReadLine())!=null){
System.out.println(len);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
mybr.myclose();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class MyLineNumberReader{
private FileReader r;
public MyLineNumberReader(FileReader r){
this.r=r;
}
public String MyLinenumberReadLine() throws IOException{
StringBuilder sb=new StringBuilder();
int ch=0;
int num=0; //定义一个计数器
while((ch=r.read())!=-1){
if(ch=='\r'){
continue;
}
if(ch=='\n'){
num = num++;
return num+sb.toString();
}
else{
sb.append((char)ch);
}
}
return null;
}
public void myclose() throws IOException{
r.close();
}
}
复制代码
上次那个代码不对 会导致从2开始
作者:
wsssx
时间:
2011-12-6 18:14
提示:
作者被禁止或删除 内容自动屏蔽
作者:
颜秉武
时间:
2011-12-6 18:25
错了 也不对 汗
作者:
颜秉武
时间:
2011-12-6 18:28
wsssx 发表于 2011-12-6 18:14
为什么还要num = num++; 这样哪?直接 num++;或者num+=1;不可以吗?
我以为是这里的错
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2