首页 > 解决方案 > 为什么将行拆分为数组后,for循环后的代码不起作用?

问题描述

在这个循环中,arraylist中的字符串被分割,每个单词被插入到一个数组中。我只需要第二个位置的日期来将它与我通过的日期进行比较。如果不存在,则从 arraylist 中删除整个字符串。

出于这个原因,我使用了迭代器。一切正常,但 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但它们不起作用

标签: javaarraysarraylistoutput

解决方案


由于您的变量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))。


推荐阅读