我有一个带有3个标题的文本文件


serviceid, jobid, serviceNumber
001, 5, 280



这存储了一周的机械工工作。只能有一个jobid / serviceid,但可以有多个服务编号。

我有一个String[]保留拆分,然后分配这些值。但是,诀窍是有些行具有多个serviceNumber,例如


serviceid, jobid, serviceNumber
002, 8, 250,280,290



如何扩展数组以保存在int[] serviceNumberArray途中遇到的任何其他代码?而且,不允许使用ArrayList。这是我当前的代码:

String jobs; //holds extracted textfile values
int jobID;           //holds job id
int serviceID;       //holds service id
int[] serviceNumber; //holds all service numbers

String[] splitJobs = new String[2]; //holds all split jobs
splitJobs = jobs.split(","); //splits jobs and sets delimiter as comma
this.serviceid = Integer.parseInt(splitJobs[0]);
this.jobID = Integer.parseInt(splitJobs[1]);
this.serviceNumber = Integer.parseInt(splitJobs[2]);

最佳答案

首先,您的代码看起来像Java,因此我假设这就是您需要的答案。那这个

String[] splitJobs = new String[2]; // <-- array reference.


具有欺骗性。您将其丢弃,可以完全消除该行,应移动serviceNumber的声明。我认为您想要类似的东西(请注意,正则表达式将删除逗号周围的所有空格),

// String[] splitJobs = new String[2];
String[] splitJobs = jobs.split("\\s*,\\s*"); // <-- creates a "dynamic" array.
this.serviceid = Integer.parseInt(splitJobs[0]);
this.jobID = Integer.parseInt(splitJobs[1]);
int[] serviceNumber = new int[splitJobs.length - 2];
for (int i = 2; i < splitJobs.length; i++) {
    this.serviceNumber[i - 2] = Integer.parseInt(splitJobs[i]);
}


该循环也可以写成

for (int i = 0; i < splitJobs.length - 2; i++) {
    this.serviceNumber[i] = Integer.parseInt(splitJobs[i + 2]);
}

10-01 19:18