检查int数组中的int

时间:2014-11-18 17:39:42

标签: java arrays integer boolean contains

我正在尝试在int []数组中找到一个整数,并返回true或false,具体取决于它是否存在于任何地方,但是我的代码是我从众多网站中获取的。

我的数组如下:

private static final int[] thirtyOneDays = {1, 3, 5, 7, 8, 10, 12};

我正在搜索它:

Arrays.asList(thirtyOneDays).contains(month)

月份是整数。

调试程序时,所有变量和字段都按预期正确设置,它总是返回false。有谁知道这是为什么?

至于月份,它来自我的GUI上的JTextField:

new Validate(txtDay.getText(), txtMonth.getText(), txtYear.getText());

这是Validate构造函数:

public Validate(String day, String month, String year)
{
    instance = this;

    if(this.isYearValid(year))
    {
        if(this.isMonthValid(month, year))
        {
            if(this.isDayValid(day, month, year))
            {
                isAllValid = true;
            }
        }
    }
}

这是isDayValid()的顶部:

private boolean isDayValid(String dayS, String monthS, String yearS)
{
    int year = Integer.parseInt(yearS);
    int month = Integer.parseInt(monthS);
    int day = Integer.parseInt(dayS);

~~~~~~~ 附:有什么区别:

int[] intArray = {1, 2, 3}
int[] intArray = new int{1, 2, 3, 4}
Integer[] intArray = new Integer{1, 2, 3, 4}

4 个答案:

答案 0 :(得分:3)

Arrays.asList(thirtyOneDays)返回List,其中包含int[]类型的单个条目,该条目与原始List中的任何整数都不同。

答案 1 :(得分:2)

请改为尝试:

    for(int x:thirtyOneDays) {
        if (x == month) {
            return;
        }
    }

您正在尝试将整数数组与单个整数进行比较。所以有点像说这支笔就像这组十支钢笔一样。答案总是不行。

关于这一点:

int[] intArray = {1, 2, 3}
int[] intArray = new int{1, 2, 3, 4}
Integer[] intArray = new Integer{1, 2, 3, 4}

int是一个你不能调用方法的基类型,而Integer是一个包装类,它允许你实质上调用方法。

我不确定前两行之间有什么区别,但我怀疑它涉及Java如何分配内存。

答案 2 :(得分:0)

int []是一个primitvs数组。其中Integer []是Integer对象的数组。因此它的大小是不同的。它根本不是同一类型。

答案 3 :(得分:0)

或试试这个。使用while循环和布尔表达式,您不必通过整个数组进行迭代。

boolean match = false;
int index = 0;
while(!match && index < thirtyOneDays.length) {
    if(thirtyOneDays[index] == month) {
        match = true;

        //do what u want with the matching int
    }
index++;
}