.contains() 方法不起作用——在数组 Java 中找到一个 int

.contains() method not working -- finding an int in array Java

我在整个互联网上找了好几个小时,但找不到任何我能理解的东西! (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;
      }
    }
  }

我是新手,不知道为什么会这样。

int[] 是原始数组,没有方法 .contains()。如果您改用 List<Integer>,那会给您一个 .contains() 方法来调用。

此外,即使在 val < 1val > 50 时,您的搜索方法也必须 return 一个值。

如果你需要 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;
}

List接口定义了方法contains。将接口视为 classes 可以 "sign" 的契约(在 Java 中,这是使用关键字 implements 完成的),它表示 class 必须具有某些事情在其实施中。 List 接口的一个非常常见的实现是 ArrayList,但是列表不能很好地处理原始 int 类型,所以你要做的是制作一个 ArrayList 的整数。

制作整数 ArrayList 的最简单方法是首先制作一个整数数组(我知道,Java 需要很多奇怪的步骤才能让事情正常进行)。

此外,您要确保布尔方法总是 return 布尔值,否则会出现编译错误。

这是一个工作示例:

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"
    }
}