所以我很难理解增强的for循环..
编写一个名为 contains() 的方法,该方法接受一个整数数组和一个整数值。如果数组包含指定的值,则该方法应返回 true,否则返回 false。
boolean contains (int [] x, int y) {
for (y : x) {
}
}
我真的不明白他们是如何工作的,我显然需要退货?
如果要检查y
数组中的数字是否包含x
,则应执行以下操作:
boolean contains (int [] x, int y) {
for (int i : x) {
if (i == y) return true;
}
return false;
}
这种类型的for
循环通常称为for-each
. int i : x
基本上是指Go through the loop 'x' and name the current variable 'i'
。然后,如果当前变量i
等于您正在寻找的变量(在您的情况下 - y
),那么return true
.
如果没有在冒号 (:) 符号左侧定义的数据类型,增强的 for 循环将无法工作。
for (int i : x) // int(in this case) is necessary at left side and array type is necessary at right side
{
}
还要使用用户定义的集合,那么您应该实现Iterable接口以使用 foreach 循环,就像您在上面使用的一样。您将在 Collection 框架中看到这些概念。
您需要遍历数组中的项目,并检查其中一个是否是y
,您正在寻找的 int 。
我从您的问题中假设您对正常的 for 循环更满意:
boolean contains (int [] x, int y) {
for (int i = 0; i < x.length; i++) { //loop over each item in the array
if (x[i] == y) return true; //if the i-th item in x is y,
//you are done because y was in x
}
return false; //you have not found y, so you return false here
}
boolean contains (int [] x, int y) {
for (int item : x) { //in this loop, item is x[i] of the previous code
if (item == y) return true;
}
return false;
}
for (Type item : array)
. 例如,您不能通过Type
在循环之前声明变量来省略。使用普通的 for 循环,您将编写如下内容:
boolean contains (int [] x, int y) {
for (int i=0; i<x.length; i++) {
if(y == x[i] return true;
}
return false;
}
然而,使用增强的循环,它可以简化如下。
boolean contains (int [] x, int y) {
for (int k: x) {
if(y == k) return true;
}
return false;
}
这只是一个小小的便利。
您可能会发现以下内容很有用:https ://blogs.oracle.com/CoreJavaTechTips/entry/using_enhanced_for_loops_with