0
String str1,str2,str3; 
String[] inInvoiceLine= new String [36]; 
inInvoiceLine = Col1.split(","); 
if (rowNum == 1) 
{ 
    outInvStartDt = inInvoiceLine[0]; 
    outInvEndDt = inInvoiceLine[1]; 
} 
else if (rowNum == 2) 
{ 
for(int i = 0; i < inInvoiceLine.length - 1; i++) 
{ 
names.add(inInvoiceLine[i].trim());}} 
else if(rowNum >= 3 && rowNum <= 4) 
{ 
for(int i = 0; i < inInvoiceLine.length - 1; i++) 
{ 
str1=(inInvoiceLine[i].trim()); 
str2=names.get(i); 
str3=str2.concat(str1); 
names.set(i,str3); 
} 
} 
else if(rowNum > 4) 
{ 
    for(int i = 0; i < inInvoiceLine.length - 1; i++) 
{  
Invoice_Beg_Date=outInvStartDt ; 
Invoice_End_date=outInvEndDt ; 
     switch (i) 
{ 
     case 0: outCarrier = inInvoiceLine[i].trim(); 
       break; 
     case 1: outContract = inInvoiceLine[i].trim(); 
       break; 
     case 2: outGroup = inInvoiceLine[i].trim(); 
       break; 
     default: outName = names.get(i); 
       outValue = inInvoiceLine[i].trim(); 


       generateRow(); the fixed columns. 
       break; 
     } 

    } 
} 
rowNum++; 

привет Все, я получаю ошибку в заголовке в преобразовании Java, Source, разделенных запятыми, первый строка читает даты, строки 2,3 и 4 будут конкатенацией полей и остальными значениями, пожалуйста, помогите.Сообщение: JAVA PLUGIN_1762 Сообщение: [ERROR] java.lang.IndexOutOfBoundsException: Индекс: 37, Размер: 37

+0

Похоже, что ваш исходный файл имеет более 36 полей. Не могли бы вы проверить исходный файл? – Samik

ответ

0

Измените размер массива на максимальное количество полей (количество запятых + 1), которое может быть получено из исходного файла. Например, если существует не более 50 запятых, измените объявление массива на:

String[] inInvoiceLine= new String [51]; 

Если нет. из запятых являются суровыми, и вы не можете решить, сколько из них поступит заранее, вы можете динамически создавать массив без указания его размера. Вы можете изменить ниже двух линий

String[] inInvoiceLine= new String [36]; 
inInvoiceLine = Col1.split(","); 

к следующему

String[] inInvoiceLine = Col1.split(","); 

это будет динамически создать массив, не беспокоясь о том, сколько запятых присутствуют в исходном файле.

0
It worked. but I have another question .in the above code if you see I am trimming and concatenating the fields. 
example: for the rownum2,3 and 4 if the field names are like 'totalfeecount', I need to put the space between each word 'total fee count'. 
what I need to add in the above code to achieve this. 

else if(rowNum >= 3 && rowNum <= 4) 
{ 
for(int i = 0; i < inInvoiceLine.length - 1; i++) 
{ 
str1=(inInvoiceLine[i].trim()); 
str2=names.get(i); 
str3=str2.concat(str1); 
names.set(i,str3); 
} 
I am guessing this is where i need to give the space option to get the o/p. please help.