handle ArrayIndexBoundsOfException when the String value is dynamic

use*_*222 -2 java

I have a dynamic string value coming which i need to split and assign to other fields as shown in the below sample code.

public class TestDataType {
    public static void main(String[] args) {
        String firstName;
        String lastName;
        String useCaseId;
        String partner;
        String s = "Annie-Marie-83B782"; //dynamic string
        // String s = "Annie-Marie-83B782-Alex";
        // String s = "Annie--83B782-";
        final String[] tokens = s.split("-");
        firstName = tokens[0];
        lastName = tokens[1];
        useCaseId = tokens[2];
        partner = tokens[3];
        System.out.println("firstName " + firstName);
        System.out.println("lastName " + lastName);
        System.out.println("useCaseId " + useCaseId);
        System.out.println("partner " + partner);
    }
}
Run Code Online (Sandbox Code Playgroud)

The above code is throwing the below exception:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
Run Code Online (Sandbox Code Playgroud)

由于在使用split(String s = "Annie-Marie-83B782";)时字符串中没有tokens [3] ,因此抛出了上述异常,当我有tokens [3]分配值时,如何在程序中处理所有可能的情况,否则它是空白。类似地,我该如何处理何时String s = "Annie--83B782-

Tac*_*729 5

这是使用switch语句的好时机。我建议您让Google阅读更多内容,因为它们在这种情况下会非常有用。这是您的代码:

String firstName = "";
String lastName = "";
String useCaseId = "";
String partner = "";
String s = "Annie-Marie-83B782";
final String[] tokens = s.split("-");


switch (tokens.length) {
case 4:
    partner = tokens[3];
case 3:
    useCaseId = tokens[2];
case 2:
    lastName = tokens[1];           
case 1:
    firstName = tokens[0];
    break;
default:
    System.err.println("Invalid input");
    return;
}

System.out.println("firstName " + firstName);
System.out.println("lastName " + lastName);
System.out.println("useCaseId " + useCaseId);
System.out.println("partner " + partner);
Run Code Online (Sandbox Code Playgroud)