2024-06-25 01:27:46 | 我爱编程网
原因在于你最后
for循环
输出中i
第一行:a
第二行:bc
那么此时file.length()是多少呢?其实它是'a'、'\n'、'b'、'c'、'\n'五个字符组成,所以此时length=5,然而你读取文件的时候,你用的是readline(),所以会读到两行数据,而你的预期结果也应该是arr数组中有两个
字符串
。
所有数据读取完后,又由于你arr数组的长度取的是leagth也就是5,此时arr数组的arr[0]="a",arr[1]="bc",arr[2]=null,arr[3]=null,arr[4]=null。所以你最后循环输出arr数组时,后面几个值就是null。
综上,该问题的根本原因在于arr数组长度的定义有误。因为你提前并不能知道文件有多少行,所以你无法确认arr数组到底该设置多少,你就想用file.length()来定义,但file.length()往往是远大于文件行数的。
解决这个问题,可以利用java里的集合List,List在定义的时候不需要声明其长度,最大长度应该是Integer的最大值,使用List的子类ArrayList可以确保顺序无误,将代码修改为:
public static void main(String[] args) throws IOException {
File file = new File("D:/1.txt");
List
int i = 0;
if (file.exists()) {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String temp;
while ((temp = br.readLine()) != null) {
arr.add(temp);
System.out.println(arr.get(i));
i++;
}
br.close();
fr.close();
for (i = 0; i < arr.size(); i++) {
System.out.println(arr.get(i));
}
}
}
运行结果:
文件内容:
输出:
这个是空指针异常,空指针的解决办法: 重点关注报错发生的所在行,通过空指针异常产生的两条主要原因诊断具体的错误。同时为了避免空指针的发生,最好在做判断处理时将“null”或者空值放于设定的值之前。
在Java中一般报空指针异常的原因有以下几种:
1、字符串变量未初始化;
2、接口类型的对象没有用具体的类初始化,比如:
List lt;会报错
List lt = new ArrayList();则不会报错了
3、当一个对象的值为空时,你没有判断为空的情况。你可以试着把下面的代码前加一行代码:
if(rb!=null && rb!="")
改成:
if(rb==null);
if(rb!==null&&rb!="") 或者if((“”).equals(rb))
扩展资料:
空指针异常的报错我爱编程网
root cause
java.lang.NullPointerException
Dao.BookInfor.ImFromClassification(BookInfor.java:31
org.apache.jsp.front.home_jsp._jspService(home_jsp.java:120)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
因为变量s变量初始化默认为null的。你还没有对其赋值呢voidMystery(){s="constructor";}不是构造函数,newMystery()时候不会执行的。构造函数这样写publicMystery(){s="constructor";}
2023-12-21 16:29:16
2023-12-24 20:21:11
2024-03-31 15:14:06
2024-03-21 00:22:13
2024-02-10 22:15:59
2023-12-27 00:01:14