我一直在寻找几个小时,整个互联网和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;
}
}
}
我很擅长学习,我不知道为什么会这样。
答案 0 :(得分:1)
int[]
是一个原始数组,没有方法.contains()
。如果您使用List<Integer>
代替,则可以使用.contains()
方法进行调用。
此外,即使val < 1
或val > 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"
}
}