java 如何将另一个类中的数组列表放到2d数组列表中

0qx6xfy6  于 2023-05-21  发布在  Java
关注(0)|答案(1)|浏览(91)
public void filehandling() throws IOException{
 FileWriter f = new FileWriter("C:\\Users\\PCB\\Documents\\NetBeansProjects\\Billing\\src\\Files\\MeterNumber.txt");
     BufferedWriter b= new BufferedWriter(f);
     b.write("13920");
     b.newLine();
     b.write("32981");
     b.newLine();
     b.write("2399");
     b.newLine();
     b.write("12903");
     b.newLine();
     b.write("59942");
     b.newLine();
     b.write("58342");
     b.newLine();
     b.write("12324");
     b.newLine();
     b.write("66342");
     b.newLine();
     b.write("90012");
     b.newLine();
     b.write("55221");
     b.close();
     f.close();

}

public void filetoarray() throws IOException{

BufferedReader bufReader = new BufferedReader(new FileReader("C:\\Users\\PCB\\Documents\\NetBeansProjects\\Billing\\src\\Files\\MeterNumber.txt"));
ArrayList<String> mnumber = new ArrayList<>();

String line = bufReader.readLine();
while (line != null) {
  mnumber.add(line);
  line = bufReader.readLine();
}
bufReader.close();

}    
 ArrayList<ArrayList<String>> mdetails = new ArrayList();{

ArrayList<String> ccode= new ArrayList();{
ccode.add("123468");
ccode.add("492312");
ccode.add("642344");
ccode.add("353421");
ccode.add("354332");
ccode.add("6746643");
ccode.add("7578885");
ccode.add("3949390");
ccode.add("1000348");
ccode.add("5396978");
ccode.add("1234567");
 }

ArrayList<String> prreading= new ArrayList();{
prreading.add("1000");
prreading.add("6000");
prreading.add("3980");
prreading.add("2300");
prreading.add("4200");
prreading.add("8000");
prreading.add("1230");
prreading.add("4222");
prreading.add("5100");
prreading.add("3000");
prreading.add("");
 }

 ArrayList<String> ctype= new ArrayList();{
ctype.add("r");
ctype.add("r");
ctype.add("c");
ctype.add("c");
ctype.add("r");
ctype.add("c");
ctype.add("r");
ctype.add("c");
ctype.add("r");
ctype.add("r");
ctype.add("");
 }



mdetails.add(mnumber); 
mdetails.add(ccode); 
mdetails.add(prreading); 
mdetails.add(ctype);

}
我试图使用将文本文件转换为数组列表,然后将其包含到另一个类的2D数组列表中。我想将它添加到2d数组列表中,这样我就可以简单地使用2d数组列表的操作来调用它的内容
我对java还很陌生,还没有真正找到解决这个问题的方法,非常感谢你的帮助。
This is how I plan to use the contents of the text file through array lists

bvjxkvbb

bvjxkvbb1#

我已经修改了你的代码以返回一个List<List<String>>
考虑以下方法。
如果只是添加了几行代码,则不需要BufferedWriter
将您的FileWriter放入try-with-resources块中,这样它会在出错时自动关闭。
此外,您可以利用append方法,这是一个“构建器”方法,允许您链接调用。如果需要,还可以使用PrintWriter,它有一个println方法,使其成为一个单独的调用。

public void filehandling(String path) throws IOException {
    try (FileWriter writer = new FileWriter(path)) {
        String newline = System.lineSeparator();
        writer.append("13920").append(newline);
        writer.append("32981").append(newline);
        writer.append("2399").append(newline);
        writer.append("12903").append(newline);
        writer.append("59942").append(newline);
        writer.append("58342").append(newline);
        writer.append("12324").append(newline);
        writer.append("66342").append(newline);
        writer.append("90012").append(newline);
        writer.append("55221");
        writer.flush();
    }
}

类似地,将BufferedReader放在try-with-resources块中。
使用一些额外的方法返回ccodeprreadingctype值。
这当然不是必需的,尽管它可以提高应用程序的可伸缩性。
最后,对于ArrayList,声明类型可以是List

public List<List<String>> filetoarray(String path) throws IOException {
    List<String> lines;
    try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
        lines = new ArrayList<>();
        String line;
        while ((line = reader.readLine()) != null)
            lines.add(line);
    }
    List<List<String>> list = new ArrayList<>();
    list.add(lines);
    list.add(List.of(ccode()));
    list.add(List.of(prreading()));
    list.add(List.of(ctype()));
    return list;
}

String[] ccode() {
    return new String[] {
        "123468",
        "492312",
        "642344",
        "353421",
        "354332",
        "6746643",
        "7578885",
        "3949390",
        "1000348",
        "5396978",
        "1234567",
    };
}

String[] prreading() {
    return new String[] {
        "1000",
        "6000",
        "3980",
        "2300",
        "4200",
        "8000",
        "1230",
        "4222",
        "5100",
        "3000",
        ""
    };
}

String[] ctype() {
    return new String[] {
        "r",
        "r",
        "c",
        "c",
        "r",
        "c",
        "r",
        "c",
        "r",
        "r",
        ""
    };
}

相关问题