I want to split the string and assign the tokens to different fields, if the tokens size is not as expected it is throwing the ArrayIndexOutOfBoundsException.
When the data is as expected, it is showing the empty value.
Sample code:
public class Test {
public static void main(final String[] args) {
List<String> firstNames = new ArrayList<>();
List<String> lastNames = new ArrayList<>();
List<String> useCaseIds = new ArrayList<>();
List<String> partner = new ArrayList<>();
List<String> comments = new ArrayList<>();
String s = "Annie-Marie--Joe"; // -NoData";
// final String s = "Annie-Marie-83B782-Joe-NoData"; //showing empty value when printing the list.
String[] tokens = s.split("-");
switch (tokens.length) {
case 1:
firstNames.add(tokens[0]);
case 2:
lastNames.add(tokens[1]);
case 3:
useCaseIds.add(tokens[2]);
case 4:
partner.add(tokens[3]);
case 5:
comments.add(tokens[4]);
default:
break;
}
System.out.println("firstNames " + firstNames);
System.out.println("lastNames " + lastNames);
System.out.println("useCaseIds " + useCaseIds);
System.out.println("partner " + partner);
System.out.println("comments " + comments);
}
}
Output:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
--EDIT-- Modified the code as shown below.
final String s = "Annie-Marie-83B782-Joe"; // showing empty value when
// printing the list.
final String[] tokens = s.split("-");
switch (tokens.length) {
case 1:
firstNames.add(tokens[0]);
break;
case 2:
lastNames.add(tokens[1]);
break;
case 3:
useCaseIds.add(tokens[2]);
break;
case 4:
partner.add(tokens[3]);
break;
case 5:
comments.add(tokens[4]);
break;
default:
break;
}
System.out.println("firstNames " + firstNames);
System.out.println("lastNames " + lastNames);
System.out.println("useCaseIds " + useCaseIds);
System.out.println("partner " + partner);
System.out.println("comments " + comments);
}
Output:
firstNames []
lastNames []
useCaseIds []
partner [Joe]
comments []
Why the firstNames,lastNames,..are blank in my above scenario.