Почему после разбиения строки на массив код после цикла for не работает? - PullRequest
1 голос
/ 19 мая 2019

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

По этой причине я использую итератор. Все работает, но код после цикла for не работает. Устранение вставки слов в массиве работает все. Я использовал тот же метод в другом месте, и он работает без проблем, я не понимаю.

CreateMap(ArrayList<String> eventi,String data) throws ParseException {


    list_eventi = eventi;
    intervallo = data;

    String [] periodo;
    String[] arrayData;

    periodo = intervallo.split("-");
    String data_in = periodo[0];
    String data_fin = periodo[1];

    SimpleDateFormat format = new SimpleDateFormat("ddMMyyyy");

    Date dateIn = format.parse(data_in);
    Date dateFin = format.parse(data_fin);


    String[] line;

    for (Iterator<String> iter = eventi.listIterator(); iter.hasNext(); ) {
        String a = iter.next();
        line = a.split(" ");  //this is the problem// 
        String d = line[2];
        Date dateImport = format.parse(d);

        if(!dateImport.before(dateIn) && !dateImport.after(dateFin)) {
            //date che sono nell'intervallo
            // date between 
            System.out.println(d);
        } else{
            System.out.println("dati da eliminare " + a);
            //iter.remove();

        }

    }
------------------------------ after this line the code doesn't execute

    System.out.println("dati rimanenti");
    System.out.println(list_eventi.toString());

    //Map_for_login(eventi);
    //Map_for_all(eventi);

Нет сообщения об ошибке после выполнения кода, но после цикла for есть другие методы и различные system.out, но они не работают

1 Ответ

0 голосов
/ 19 мая 2019

Поскольку ваша переменная eventi является ArrayList, вы можете просто использовать метод .forEach().

Исправить:

    List<String> resEventi = new ArrayList(); // the resulting eventi arrayList with only the correct values
    eventi.forEach( a -> {
        line = a.split(" ");
        String d = line[2];
        Date dateImport = format.parse(d);

        if(!dateImport.before(dateIn) && !dateImport.after(dateFin)) {
            //date che sono nell'intervallo
            // date between 
            resEventi.add(a);
            System.out.println(d);
        } else{
            System.out.println("dati da eliminare " + a);
        }
    });

Это должно работать, если вы передадите правильные данные(может быть исключение, увеличенное на format.parse(d)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...