如何将数组的元素与标量值进行比较

时间:2013-03-07 17:06:23

标签: java arrays

如何将数组元素与标量值进行比较?

以下是包含错误的代码部分:

if(month != numMonth[])
    System.out.printf("\n not a valid month");
if (day != daysInMonth[]  &&  day> daysOfMonth[month])
    System.out.printf("\n not a valid day");
if (year<1880 && year>2280)
    System.out.printf("\n not a valid year");

(day != daysInMonth[] && day> daysOfMonth[month]) expr中,我得到一个类文件预期错误。

3 个答案:

答案 0 :(得分:0)

使用

if (month < 0 || month > 11)

if (month < 1 || month > 12)

取决于编号是从零开始还是从一开始。

和C

答案 1 :(得分:0)

您可以将数组的元素与标量进行比较,而不是整个数组。您使用的语法仅在声明时有效:

int numMonth[] = new int[10];
or 
int numMonth[] = {1,2,3};

and so on

要与单个标量进行比较,您需要引用要与之比较的元素:

// to compare with the 1st entry
numMonth[0] == month; // with arrays being zero based
// to compare with the 2nd entry
numMonth[1] == month;

and so on

答案 2 :(得分:0)

我将建议一个更简单的替代方案(恕我直言)。

对于此任务,我将直接使用Calendar类,以避免在数组中存储不同的日期和年份。在这里的特殊情况下,闰年可能是一个问题。

首先,验证年份。它们是这个链中最简单的验证,就像几个月一样,它们不依赖于输入的任何连续参数。你做的最后一次检查,在这种情况下成为第一个:

if (year < 1880 && year > 2280)
    System.out.printf("\n not a valid year");

验证年份后,验证月份。它们也是一个简单的数字,但您必须定义如何管理它们。我将采用范围1 -> 12

if(month < 1 || month > 12)
    System.out.printf("\n not a valid month");

最后,您在Calendar的帮助下建立了一个日期。这样,您就可以获得与某个月相对应的正确天数。然后,您进行相应的验证。

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1); //Calendar manages the months 
                                    //from 0 to 11, that's why 
                                    //you need to substract 1
int maxDays = cal.getActualMaximum(Calendar.DAY_OF_MONTH);

maxDays包含指定月份和年份的最大天数。现在,您只需要检查id,该日期的输入在以下范围内:

if (day < 1 || day > maxDays)
    System.out.printf("\n not a valid day");

这样,您无需跟踪每个月的日期,也可以管理闰年。