黑马程序员技术交流社区
标题:
IO,readLine()函数问题,毕老师课堂例子
[打印本页]
作者:
阿牛
时间:
2012-3-26 10:15
标题:
IO,readLine()函数问题,毕老师课堂例子
下面是毕老师在讲IO关于自己写readLine()的课堂例子,我按老师的思路自己写了遍代码,编译能通过,但执行时却报错,
Exception in thread "main" java.lang.NullPointerException
at myBuffered.myReadLine(myBuffered.java:21)
at myBufferedDemo.main(myBuffered.java:39)
空指针异常,但我的代码和老师课堂上的一样,老师能通过每报错的。我把StringBuilder sb=null;注释掉后,重写,运行通过。问题是为什么呢?
import java.io.*;
class myBuffered
{
private FileReader r;
myBuffered(FileReader r)
{
this.r=r;
}
public static String myReadLine(FileReader r)throws IOException
{
int ch;
//StringBuilder sb=null;
StringBuilder sb=new StringBuilder();
while((ch=r.read())!=-1)
{
if(ch=='\r')
continue;
if(ch=='\n')
return sb.toString();
else sb.append((char)ch);
}
return null;
}
public void myClose()throws IOException
{
r.close();
}
}
class myBufferedDemo
{
public static void main(String[] args) throws IOException
{
FileReader fr=new FileReader("copyDemo.java");
String line=null;
while((line=myBuffered.myReadLine(fr))!=null)
{
System.out.println(line);
//fr.newLine();
}
fr.close();
}
}
作者:
鲍亚坤
时间:
2012-3-26 10:17
本帖最后由 鲍亚坤 于 2012-3-26 10:34 编辑
空指针异常。
这句StringBuilder sb=null;
作者:
鲍亚坤
时间:
2012-3-26 10:24
本帖最后由 鲍亚坤 于 2012-3-26 10:32 编辑
import java.io.*;
class myBuffered
{
private FileReader r;
myBuffered(FileReader r)
{
this.r=r;
}
public static String myReadLine(FileReader r)throws IOException
{
int ch;
StringBuilder sb=null;
sb=new StringBuilder();
while((ch=r.read())!=-1)
{
if(ch=='\r')
continue;
if(ch=='\n')
return sb.toString();
else sb.append((char)ch);
}
return null;
}
public void myClose()throws IOException
{
r.close();
}
}
class myBufferedDemo
{
public static void main(String[] args) throws IOException
{
FileReader fr=new FileReader("D:\\1.txt");
String line=null;
while((line=myBuffered.myReadLine(fr))!=null)
{
System.out.println(line);
//fr.newLine();
}
fr.close();
}
}
复制代码
没事啊
作者:
刘宁
时间:
2012-3-26 10:27
空指针异常啊;
StringBuilder sb=null;
StringBuilder sb=new StringBuilder();
这一段不该这么写的,应该是
StringBuilder sb=null;
sb=new StringBuilder();
这样写你试试。
作者:
阿牛
时间:
2012-3-26 12:49
刘宁 发表于 2012-3-26 10:27
空指针异常啊;
StringBuilder sb=null;
StringBuilder sb=new StringBuilder();
只写StringBuilder sb=null;运行出错,但毕老师就是这样写的但没出错,我把那句注释掉,改成StringBuilder sb=new StringBuilder(); 后,运行正常了,我不知道按老师的写法只写StringBuilder sb=null;我的代码哪错了
作者:
张明星
时间:
2012-3-26 13:31
java.lang.NullPointerException空指针异常,属于运行时异常
StringBuilder sb=null;
StringBuilder sb=new StringBuilder();
为什么要对同一个指针sb进行两次StringBuffer定义呢,定义一次就够了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2