将具有随机行数的字符串保存到单行数组 JAVA

Save String with random number of lines to single line array JAVA

这里是从文件中读取的方法,然后通过@符号拆分信息。这是文本文件中新月份开始的地方

public static String readPurchaseOrder(Scanner sc) {

    final String DELIMITER = "@";
    try {           
        while (sc.hasNext()) {
            sc.useDelimiter(DELIMITER);
            String data = sc.next();               
            return data;
        }

    } catch (Exception e) {
        System.out.println(e);
    }
    sc.close(); 
    return null;
}

文本文件包含以下显示的第 12 个月的信息

  04/01/12#PNW-1234#PA/1234#10
    15/01/12#BSE-5566#bT/4674#5@
    08/02/12#PNE-3456#Xk/8536#1@
    07/03/12#PEA-4567#ZR/7413#3
    09/03/12#ESE-6329#HY/7195#30@
    03/04/12#ESE-5577#LR/4992#12
    23/04/12#PNW-1235#HY/7195#2@
    09/05/12#ESE-6329#PV/5732#6
    25/05/12#BSE-5566#PV/5732#10@
    08/06/12#PNE-3457#kD/9767#1
    31/06/12#EMI-6329#ZR/7413#10@
    03/07/12#EMI-6329#PV/5732#12
    25/07/12#BSE-5566#bT/4674#5@

我正在使用它来输出由@[​​=15=]分割的文件中的信息

 for (int i = 0; i <12; i ++){
          String str[] = InputFileData.readPurchaseOrder(sC).split("\n");
          for(String s : str){
              System.out.println(s);
          }

它输出这样的数据

04/01/12#PNW-1234#PA/1234#10
15/01/12#BSE-5566#bT/4674#5

08/02/12#PNE-3456#Xk/8536#1

07/03/12#PEA-4567#ZR/7413#3
09/03/12#ESE-6329#HY/7195#30

03/04/12#ESE-5577#LR/4992#12
23/04/12#PNW-1235#HY/7195#2

09/05/12#ESE-6329#PV/5732#6
25/05/12#BSE-5566#PV/5732#10

我想将每一行存储在一个数组中,这样我就可以进一步将该行拆分为其各自的变量

如果您想将结果收集到一个数组中,每个数组元素一行,最简单的方法是使用列表(因为您事先不知道行数),并且然后将其转换为数组。数组的大小必须提前声明,所以如果你不知道它有多大,你想使用更灵活的数据结构。

public static String[] readPurchaseOrder(Scanner sc) {
    final String DELIMITER = "@";
        List<String> results = new ArrayList<>();
        try {           
            while (sc.hasNext()) {
                sc.useDelimiter(DELIMITER);
                String data = sc.next();               
                results.add(data);  // add the line to the list
            }

        } catch (Exception e) {
            System.out.println(e);
        }
        sc.close(); 
        // convert the list to an array and return it.
        return results.toArray(new String[results.size()]);
    }