java从文本中获取内容放入容器中,但是打印容器的时候只打印出了文本最后一行。

**下面两张图是关于我删掉了lines = "";和加了lines += lines;的情况,最下面两行字还有具体解释,谢谢各位能浏览我的问题
**

问题出来return值上面,怎么能成功的return lines

package hotel1;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

import hotel.CloseStreamMethod;

public class ImportData{
public ArrayList roomsLists = new ArrayList();

public static void main(String[] args) {
    ImportData ip = new ImportData();
    ip.importRooms();
}


public String importData(){

    File src  = new File("/Users/handsomeboy/eclipse-workspace/Coursework/src/hotel1/rooms.txt");

    BufferedReader br = null;

    String lines = null;
    try {
        br = new BufferedReader(new FileReader(src));
        String line = null;
        while((line = br.readLine()) != null) {
            lines = "";
            lines += line;
        }

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        CloseStreamMethod csm = new CloseStreamMethod();
        csm.close(br);
    }
    return lines;
}
public void importRooms() {

    String[] content = importData().split("\n");
    for (String row : content) {
        if(row != null) {
        String[] contents = row.split(",");
          if (contents.length == 5) {
            roomsLists.add(new Rooms(Integer.parseInt(contents[0]),
                    RoomType.valueOf(contents[1].toUpperCase()),
                    Double.parseDouble(contents[2]),
                    Integer.parseInt(contents[3]),contents[4]));
          }
        }
    }
    System.out.println(roomsLists);
}

}

输出内容:
[
RoomNumber: 301, Type: FAMILY, Price: 90.0, Capacity: 4, Facilities: own bathroom]

文本内容:
101,double,80.00,2,own bathroom
102,double,80.00,2,own bathroom
103,twin,70.00,2,shared bathroom
104,twin,70.00,2,shared bathroom
201,double,80.00,2,own bathroom
202,single,70.00,1,own bathroom
301,family,90.00,4,own bathroom

图片说明![!
图片说明
加了+号的一开始试过但是没有用,还有不加lines = "";不会打印出字符串,真的试了很多很多方法,但是改不出来,感谢各位能帮忙debug.

补充一下如果不加lines = "";的话就不能return lines,加了才能成功返回lines值,我也不知道什么,如果不加lines = ""; 打印imporData是可以成功答应所有的内容,
但是不能返回lines的值。

4个回答

lines = line;
->
lines += line;

haohaoxueBC
haohaoxueBC 加了lines += line; 删掉line = "";调用importData可以答应所有内容,但是return lines只能的内容是null;
12 个月之前 回复
haohaoxueBC
haohaoxueBC 加了lines +
12 个月之前 回复
haohaoxueBC
haohaoxueBC 抱歉能再帮忙看看吗
12 个月之前 回复
haohaoxueBC
haohaoxueBC 我加了还是只打印出一行
12 个月之前 回复

循环的时候每次都赋值给新一行记录了,并没有将每一行拼接起来。

haohaoxueBC
haohaoxueBC 抱歉可以在帮忙看一下吗
12 个月之前 回复
wojiushiwo945you
毕小宝【阿木小镇】 回复caozhy: 曹老师回答的是症结,我就是班门弄斧补充说一下啦。冒昧问一下,CSDNChat作者群里面的老曹是您吗?
12 个月之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 就是
12 个月之前 回复

你自己去看看importData()方法里的while逻辑就是了,这种情况又不复杂,自己看一遍逻辑或者是debug一下不就行了

haohaoxueBC
haohaoxueBC 抱歉,改了两天了还是改不出来,查了两天资料了,可能真的能力不足吧。。
12 个月之前 回复

问题在这里

 while((line = br.readLine()) != null) {
            lines = "";
            lines = line;
        }

每一次循环,都会清空上一次的数据,应该是lines+=line,不要 lines = "";

qq_40391363
大大泡泡糖1996 回复haohaoxueBC: 你的不能返回lines的值是什么意思,具体点
12 个月之前 回复
haohaoxueBC
haohaoxueBC 改成lines += line;也只打印出了一行,抱歉能再帮忙看看吗
12 个月之前 回复
haohaoxueBC
haohaoxueBC 如果不要lines = "";就只会打印处[];
12 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问