【问题标题】:.contains() method not working -- finding an int in array Java.contains() 方法不起作用——在 Java 数组中找到一个 int
【发布时间】:2015-05-04 22:15:18
【问题描述】:

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

我对学习很陌生,我不知道为什么会这样。

【问题讨论】:

  • 是什么让你相信一个数组有一个contains 方法?您是不是想改用List
  • int[] 是一个原始数组。数组没有方法...

标签: java arrays string contain


【解决方案1】:

int[] 是一个原始数组,没有方法.contains()。如果您改用List&lt;Integer&gt;,那将给您一个.contains() 方法来调用。

此外,即使val &lt; 1val &gt; 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;
}

【讨论】:

    【解决方案2】:

    List 接口定义了方法contains。将接口视为类可以“签名”的契约(在 Java 中,这是通过关键字 implements 完成的),它表示类在其实现中必须具有某些东西。 List 接口的一个非常常见的实现是ArrayList,但列表不能很好地与原始 int 类型一起使用,所以您要做的是制作一个整数的 ArrayList

    创建一个整数数组列表的最简单方法是先创建一个整数数组(我知道,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"
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 2014-04-25
      • 2021-07-07
      • 1970-01-01
      相关资源
      最近更新 更多