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

标签 java arrays arraylist split

这里是从文件中读取的方法,然后用@符号分割信息。这是文本文件中新月份的开始位置

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@

我使用它来输出由@分割的文件中的信息

 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()]);
    }

关于java - 将具有随机行数的字符串保存到单行数组JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29157199/

相关文章:

java - 从java中的参数创建数组

java - quartz 调度器 : run on last day of the month

java - 构造函数问题传递具有聚合关系的参数

java - SourcePollingChannelAdapter 注册 bean

java - 如何按一定顺序打印 3 个不同字符串数组的元素?

JAVA:如何将字符串ArrayList转换为整数ArrayList?

java - Spring Boot 安全性中的页面重定向问题

具有常量值的 Python 列表

javascript - 将对象数组操作为具有平均数的新数组。

Android - 将值从 sqlite 数据库加载到 arraylist