.contains()方法不起作用 - 在数组Java中查找int

时间:2015-03-04 02:35:51

标签: java arrays string contain

我一直在寻找几个小时,整个互联网和SO,但找不到我理解的任何东西! (Java上很新)

编译时,找不到包含方法的符号。 这是代码:

public class LotteryTicket {
  private String nameOfBuyer;
  private int[] numberList;

  private boolean search(int val) {
    if (val >= 1 && val <= 50) {
      if (numberList.contains(val)) {
        return true;
      } else {
        return false;
      }
    }
  }

我很擅长学习,我不知道为什么会这样。

2 个答案:

答案 0 :(得分:1)

int[]是一个原始数组,没有方法.contains()。如果您使用List<Integer>代替,则可以使用.contains()方法进行调用。

此外,即使val < 1val > 50,您的搜索方法也必须返回值。

如果您需要numberList成为int[],可以试试这个:

private boolean search(int val) {
    if (numberList != null && val >= 1 && val <= 50) {
        for(int number : numberList) {
            if (number == val) {
                return true;
            }
        }
    }
    return false;
}

或者,你可以这样做:

private boolean search(int val) {
    if (numberList != null && val >= 1 && val <= 50) {
        return Arrays.asList(numberList).contains(val);
    }
    return false;
}

答案 1 :(得分:0)

List接口定义方法contains。将接口视为合同,类可以&#34;签署&#34; (在Java中,这是通过关键字implements完成的),该关键字表示类必须在其实现中具有某些内容。 List接口的一个非常常见的实现是ArrayList,但是列表对于原始int类型不能很好地工作,所以你要做的是创建一个ArrayList的整数。 / p>

制作整数ArrayList的最简单方法是首先创建一个Integers数组(我知道,Java需要很多奇怪的步骤才能使其工作)。

此外,您要确保布尔方法始终返回布尔值,否则您将收到编译器错误。

这是一个有效的例子:

import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;

public class LotteryTicket {
    private String nameOfBuyer;
    private List<Integer> numberList;

    private boolean search(int val) {
        return (val >= 1 && val <=50) && numberList.contains(val);
    }

    public static void main(String[] args) {
        LotteryTicket lt = new LotteryTicket();
        Integer[] numberList = new Integer[] {2, 3, 4, 5, 42, 6};
        lt.numberList = new ArrayList<Integer>(Arrays.asList(numberList));
        System.out.println(lt.search(42)); // prints "true\n"
        System.out.println(lt.search(25)); // prints "false\n"
    }
}