3 Вопрос: .split («\») не работает, а также ошибка arrayIndexOitOfBoundsException: 1

вопрос создан в Thu, May 2, 2019 12:00 AM
String dateofbirth = ((JTextField)jDateChooser1.getDateEditor().getUiComponent()).getText();
        System.out.println(""+dateofbirth);

        String [] dob= dateofbirth.split("/");
       System.out.println(""+dob[0]);
       System.out.println(""+dob[1]);
       System.out.println(""+dob[2]);
    
0
  1. что правильно: заголовок с обратной косой чертой или код с прямой косой чертой? и почему вы добавляете dateofbirth в пустую строку {в println}? а JDateChooser.getDate() не возвращает выбранную дату? (Я не знаю, какой это класс)
    2019-05-02 15: 38: 09Z
  2. Не могли бы вы привести пример строки, которую вы получаете для dateofbirth? Кроме того, это не работает .split("\"); или .split("/")? Первый, .split("\"); не будет работать, потому что вы экранируете ". Это должно быть .split("\\");
    2019-05-02 15: 38: 10Z
3 ответа                              3                         

Вам нужно проверить правильность формата dateofbirth и предотвратить исключение путем проверки длины массива.

String [] dob= dateofbirth.split("/");

if(dob != null && dob.length >=3){
       System.out.println(""+dob[0]);
       System.out.println(""+dob[1]);
       System.out.println(""+dob[2]);
}
    
0
2019-05-02 15: 21: 11Z
  1. Решена проблема с форматом .... tnx много ....
    2019-05-02 16: 04: 58Z
  2. Вы можете пометить как принятый, если это поможет вам спасибо
    2019-05-02 16: 05: 36Z

Вы должны использовать индекс массива из связанной исключительной ситуации try catch.

try {
      String [] dob= dateofbirth.split("/");
       System.out.println(""+dob[0]);
       System.out.println(""+dob[1]);
       System.out.println(""+dob[2])

catch(ArrayIndexOutOfBoundsException exception) {
    handleTheExceptionSomehow(exception);
}
    
0
2019-05-02 15: 23: 05Z

похоже, что массив dob имеет только один элемент, и в нем нет индекса 1. Вот почему вы видите java.lang.ArrayIndexOutOfBoundsException: 1 Индекс начинается с 0.

Используйте цикл для навигации по массиву, чтобы вы могли динамически обрабатывать ваш сценарий использования в зависимости от размера массива. Чтобы привести пример, см. Ниже.

Пример сильный> р>

        String input = "abc/def/ghi/jkl";
        String[] matrix = input.split("/");

        /* Print each letter of the string array in a separate line. */
        for(int i = 0; i < matrix.length; ++i) {
             System.out.println(matrix[i]);
        }

Это даст вывод как,

abc
def
ghi
jkl

Таким образом, вы можете избежать встречи с java.lang.ArrayIndexOutOfBoundsException:

    
0
2019-05-02 15: 54: 09Z
источник размещен Вот