我正在尝试在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}
答案 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++;
}