Java 为什么将行拆分为数组后,for循环后面的代码不';不行?

Java 为什么将行拆分为数组后,for循环后面的代码不';不行?,java,arrays,arraylist,output,Java,Arrays,Arraylist,Output,在这个循环中,arraylist中的字符串被分割,每个单词都被插入到一个数组中。我只需要第二个位置的日期就可以与我通过的日期进行比较。如果不存在,则从arraylist中删除整个字符串 因此,我使用迭代器。一切正常,但是for循环之后的代码不起作用。消除数组中的单词插入可以解决所有问题。我在其他地方也用了同样的方法,但它没有问题,我不明白 CreateMap(ArrayList<String> eventi,String data) throws ParseException {

在这个循环中,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);
CreateMap(ArrayList事件,字符串数据)引发ParseException{
列表\事件i=事件i;
区间=数据;
字符串[]周期;
字符串[]数组数据;
periodo=间隔分割(“-”);
字符串数据_in=periodo[0];
字符串数据_fin=periodo[1];
SimpleDataFormat=新的SimpleDataFormat(“ddMMyyyy”);
Date dateIn=format.parse(data_in);
Date dateFin=format.parse(数据\u fin);
字符串[]行;
for(迭代器iter=eventi.listIterator();iter.hasNext();){
字符串a=iter.next();
line=a.split(“”;//这就是问题所在//
字符串d=第[2]行;
Date dateImport=format.parse(d);
如果(!dateImport.before(dateIn)和&!dateImport.after(dateFin)){
//日期:che sono nell'intervallo
//日期介于
系统输出打印ln(d);
}否则{
系统输出打印项次(“dati da eliminare”+a);
//iter.remove();
}
}
------------------------------在这一行之后,代码不执行
System.out.println(“dati Rimananti”);
System.out.println(list_eventi.toString());
//映射用户登录(eventi);
//为所有人绘制地图(事件);

执行代码后没有错误消息,但在for循环后有其他方法和各种system.out,但它们不起作用

,因为变量
eventi
ArrayList
您可以使用
.forEach()
方法

修正:

List resEventi=new ArrayList();//结果eventi ArrayList只包含正确的值
eventi.forEach(a->{
行=a.拆分(“”);
字符串d=第[2]行;
Date dateImport=format.parse(d);
如果(!dateImport.before(dateIn)和&!dateImport.after(dateFin)){
//日期:che sono nell'intervallo
//日期介于
保留。添加(a);
系统输出打印ln(d);
}否则{
系统输出打印项次(“dati da eliminare”+a);
}
});

如果您传入了正确的数据(可能会出现由
format.parse(d)
引发的异常),那么这应该是可行的。

因为变量
eventi
数组列表
,您可以使用
.forEach()
方法

修正:

List resEventi=new ArrayList();//结果eventi ArrayList只包含正确的值
eventi.forEach(a->{
行=a.拆分(“”);
字符串d=第[2]行;
Date dateImport=format.parse(d);
如果(!dateImport.before(dateIn)和&!dateImport.after(dateFin)){
//日期:che sono nell'intervallo
//日期介于
保留。添加(a);
系统输出打印ln(d);
}否则{
系统输出打印项次(“dati da eliminare”+a);
}
});

如果您传入了正确的数据(可能会出现由
format.parse(d)
引发的异常),那么这应该是可行的.

您应该遵循Java命名约定:变量名和方法名是用camelCase编写的。此外,您不应该使用过时的
Date
simpleDataFormat
类;使用
Java.Time
包中提供的新Java日期和时间API。您应该遵循Java命名约定:变量names和方法名称是用camelCase编写的。此外,您不应该使用过时的
Date
simpleDataFormat
类;使用新的Java日期和时间API,可在
Java.Time
package.Nono中找到,数据是正确的,因为我的字符串格式是“登录09042019 ac11b 45.463,9.188 A中”然后,日期位于第二个位置(日期格式ddmmyyyy)。很抱歉,我表达得不好。好的,我发现了问题。代码上没有,但我读的是file.txt。感谢您的支持。否,数据是正确的,因为我的字符串格式为“登录09042019 ac11b 45.463,9.188 A”,那么日期位于第二个位置(日期格式ddmmyyyy)。很抱歉,我表达得不好。好的,我发现了问题。代码上没有,但我读的是file.txt。感谢您的支持
    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);
        }
    });