首页 > 解决方案 > 使用 java.Calendar 在其他两个人之间的日历

问题描述

我必须制定一种方法来计算两个日期之间有多少访客参加。这是我为访问者设置值的方法:

    System.out.println("Ingrese dia de la visita: ");
    fechaVisita.set(Calendar.DAY_OF_MONTH, txt.nextInt());
    System.out.println("Ingrese mes de la visita: ");
    fechaVisita.set(Calendar.MONTH, txt.nextInt());
    System.out.println("Ingrese año de la visita: ");
    fechaVisita.set(Calendar.YEAR, txt.nextInt());

这里我如何设置搜索的开始日期和结束日期:

    System.out.println("Ingrese dia desde: ");
    fechaDesde.set(Calendar.DAY_OF_MONTH, txt.nextInt());
    System.out.println("Ingrese mes desde: ");
    fechaDesde.set(Calendar.MONTH, txt.nextInt());
    System.out.println("Ingrese año desde: ");
    fechaDesde.set(Calendar.YEAR, txt.nextInt());
    System.out.println("Ingrese dia hasta: ");
    fechaHasta.set(Calendar.DAY_OF_MONTH, txt.nextInt());
    System.out.println("Ingrese mes hasta: ");
    fechaHasta.set(Calendar.MONTH, txt.nextInt());
    System.out.println("Ingrese año hasta: ");
    fechaHasta.set(Calendar.YEAR, txt.nextInt());

然后,我将正确的方法称为“recaudacion”:

    public int recaudacion(Calendar p_fechaDesde, Calendar p_fechaHasta)
    { 
        int cont = 0;
        for(int i=0; i<this.getVisitantes().size(); i++)
        {
           if(p_fechaDesde.after(((Visitante)this.getVisitantes().get(i)).getFechaVisita()) && p_fechaHasta.before(((Visitante)this.getVisitantes().get(i)).getFechaVisita()))
            {
                cont++;
            }
        }
    return cont;
    }

但这不起作用,条件永远不会正确,我不知道为什么即使我输入错误值仍然是错误的。我也试过这个:

    public int recaudacion(Calendar p_fechaDesde, Calendar p_fechaHasta)
    { 
        int cont = 0;
        for(int i=0; i<this.getVisitantes().size(); i++)
        {
           if(p_fechaDesde.compareTo(((Visitante)this.getVisitantes().get(i)).getFechaVisita()) > 0 &&
           p_fechaHasta.compareTo(((Visitante)this.getVisitantes().get(i)).getFechaVisita()) < 0)
            {
                cont++;
            }
        }
    return cont;
    }

但也行不通。我不知道我错过了什么,理论上必须有效,但没有......

标签: java

解决方案


正确缩进您的代码将表明您return在 for 循环结束之前

将您的功能更改为

public int recaudacion(Calendar p_fechaDesde, Calendar p_fechaHasta) { 
    int cont = 0;
    for(int i=0 ; i < this.getVisitantes().size(); i++)
    {
        if(p_fechaDesde.after(((Visitante)this.getVisitantes().get(i)).getFechaVisita()) 
                && p_fechaHasta.before(((Visitante)this.getVisitantes().get(i)).getFechaVisita()))
                    cont++;
    }
    return cont;
}

我不确定您要达到什么目标,但这肯定会改变for循环的行为,并且可能会做您想做的事情。


推荐阅读