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