【发布时间】:2015-08-14 18:21:20
【问题描述】:
public static void main(String[] args) {
Integer[] courses1 = {1,2,3};
Integer[] courses2 = {0,1};
Integer[] longestArr;
Integer[] shortestArr;
ArrayList commonCourses = new ArrayList();
if ( courses1.length > courses2.length)
{
longestArr = courses1; shortestArr = courses2;
}
else
{
longestArr = courses2; shortestArr = courses1;
}
for ( int i : longestArr)
{
for ( int j : shortestArr)
{
if (i == j);
commonCourses.add(i);
}
}
Collections.sort(commonCourses);
System.out.println(commonCourses.size());
}
无论 course1 和 course2 的值是什么,当它应该只包含两个数组中的元素时,arrayList commonCourses 的大小总是比两个数组中的元素总数大一倍。
我有 2 个问题,为什么将 2 个数组中的元素添加到 arrayList,为什么 arrayList 的大小总是比元素总数大一?
如果您想知道为什么我一开始就声明了课程 1 和课程 2,这是我在 Eclipse 上测试的来自 TalentBuddy.co 的问题。我用不同的起始条件进行了测试,总是发生同样的事情。
我的新瘦身解决方案
public static void main(String[] args) {
Integer[] courses1 = {1};
Integer[] courses2 = {0};
ArrayList <Integer>commonCourses = new ArrayList<Integer>();
for ( int i : courses1)
{
for ( int j : courses2)
{
if (i == j)
commonCourses.add(i);
}
}
Collections.sort(commonCourses);
System.out.println(commonCourses.size());
}
【问题讨论】:
-
另外,为什么需要“最短”和“最长”?
-
你可以用一个循环来做到这一点。不需要嵌套循环
-
我认为如果我在外部循环中使用最短的数组,它会有一个数组越界异常,但使用增强的 for 循环我发现不会发生
标签: java arrays loops arraylist