java - 使用 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;
}
但也行不通。我不知道我错过了什么,理论上必须有效,但没有......
解决方案
正确缩进您的代码将表明您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
循环的行为,并且可能会做您想做的事情。
推荐阅读
- .net - 来自桌面应用程序的 .NET C# 在线数据库
- python - 我有一个关于在 python 中打印文件的问题
- laravel - 如何从 Laravel 中的 .env 文件访问存储文件
- arrays - 汇编语言中的数组冒泡排序
- react-native - 是否可以在不使焦点组件丢失的情况下关闭键盘?
- python - Pytorch CrossEntropyLoss 张量流等效
- java - 如果其中一个值相同,如何按字母顺序对数组列表进行排序(Java)
- vb.net - 在 PowerPoint VB 中选择一个 TextRange
- python - 如何使用每个字母 2 个字母字符将字符串转换为自定义库
- c++ - 使用 graphics.h C++ 库对其进行刺激时,深度优先搜索算法无法按预期工作