我有一个非常简单的程序,我只需要检查数组中的值。我有一门课叫bulkBean。就是这个。
public class bulkBean {
private int installmentNo;
private double amount;
public int getInstallmentNo() {
return installmentNo;
}
public void setInstallmentNo(int installmentNo) {
this.installmentNo = installmentNo;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
}现在我的程序中有一个bulkBean类型的数组,这是我的程序。
import java.util.Arrays;
public class test {
public static boolean scan_bulkList(bulkBean[] bulkList, int i) {
int[] arr = new int[bulkList.length];
for(int x=0;x<bulkList.length;x++){
arr[x] = bulkList[x].getInstallmentNo();
}
for(int j = 0; j< arr.length ;j++){
System.out.println("INFO: array "+j+" = "+arr[j]);
}
if (Arrays.asList(arr).contains(i) == true) {
return true;
} else {
return false;
}
}
public static void main(String[] arg){
bulkBean bb1 = new bulkBean();
bb1.setInstallmentNo(1);
bb1.setAmount(5500);
bulkBean bb2 = new bulkBean();
bb2.setInstallmentNo(2);
bb2.setAmount(4520);
bulkBean[] bulkArray = new bulkBean[2];
bulkArray[0] = bb1;
bulkArray[1] = bb2;
boolean a = scan_bulkList(bulkArray,1);
System.out.println("val = "+a);
}
}我创建了两个散装bean实例,并为它们设置了值。然后,我将这两个实例添加到数组中。然后,我将该数组传递给方法,以检查值(也是作为参数提供的)。在这种情况下是1.)。如果数组包含该值,则应返回true,否则返回false。不管我输入什么值,它都会返回false。我为什么要面对这个问题?
发布于 2014-10-15 12:20:00
正如TheListMind所告诉的,Arrays.asList()在int[]上给出了一个包含数组的列表。
就我个人而言,我将直接构造列表,而不是构造数组,或者更好地(不需要数组实例化),在迭代大数组时进行测试:
for(int x=0;x<bulkList.length;x++){
if (bulkList[x].getInstallmentNo() == i){
return true;
}
}
return false;发布于 2014-10-15 12:09:24
Arrays.asList()返回一个只有一个元素的列表-一个数组。因此,您实际上是在与数组进行比较。您需要与数组中的每个值进行比较。
发布于 2014-10-15 12:52:20
这里所犯的错误是,您创建了int数组,它必须是Integer数组,因为Arrays.asList().contains(Object o);使输入参数也是Integer(Integer i)。int不是对象,Integer是对象。希望它能成功。
int[] arr = new int[bulkList.length];改为:
Integer[] arr = new Integer[bulkList.length];https://stackoverflow.com/questions/26382217
复制相似问题