【发布时间】:2018-03-26 11:02:33
【问题描述】:
我为一个程序编写了代码,该程序接受两个列表,如果第二个数组的所有元素也出现在第一个数组中,则返回 true。但是,此代码仅适用于大小相等的两个数组(例如 {1, 2, 3} 和 {3, 2, 1} 返回 true),但如果第一个数组大于第二个数组,我会收到 rangeCheck 异常(公平地说,我完全期待这一点)。
import java.util.*;
public class Ex8 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("How many numbers do you wish to enter into the
array?");
int thisMany = scanner.nextInt();
ArrayList<Integer> numbers = new ArrayList<Integer>();
System.out.println("Please enter some numbers, separated by
spaces");
for(int i = 0; i<thisMany; i++) {
int x = scanner.nextInt();
numbers.add(x);
}
Scanner sc = new Scanner(System.in);
System.out.println("How many numbers do you wish to enter into the
second array?");
int nowThisMany = sc.nextInt();
ArrayList<Integer> numbers2 = new ArrayList<Integer>();
System.out.println("Enter some numbers, separated by spaces");
for(int j = 0; j<nowThisMany; j++) {
int y = sc.nextInt();
numbers2.add(y);
}
System.out.println(Arrays.toString(numbers.toArray()));
System.out.println(Arrays.toString(numbers2.toArray()));
isContained(numbers, numbers2);
System.out.println(isContained(numbers, numbers2));
}
public static boolean isContained(ArrayList<Integer> numbers,
ArrayList<Integer> numbers2) {
boolean equalsTest = false;
for(int i = 0; i<numbers.size(); i++) { //This gives exception if
//both arrays aren't the same size
if(numbers.get(i) == numbers2.get(i)) {
equalsTest = true;
}
}
return equalsTest;
}
}
谁能向我解释如何检查第二个数组和第一个数组而不会遇到异常?谢谢
【问题讨论】:
-
boolean Collection.containsAll(Collection<?> c);