我想知道,在这种情况下,我们可以使用增强的for而不是常规的for循环
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
for (int temp : arr) {
System.out.println(temp);
}
在这种情况下,我可以使用增强的for吗?
for (int i = arr.length; i <= 0; i--) {
System.out.println(arr[i]);
}
实际上,建议的重复项似乎都不能为数组而不是列表提供解决方案。
不幸的是,没有装箱和拆箱是无法做到这一点的。
Iterable<Integer> reverse(final int[] arr) {
return () -> new Iterator<Integer>() {
private int curr = arr.length - 1;
@Override
public boolean hasNext() {
return curr >= 0;
}
@Override
public Integer next() {
if (curr < 0) {
throw new NoSuchElementException("exhausted");
}
return arr[curr--];
}
};
}
(也许在瓦尔哈拉,拳击和拆箱是不必要的。)
用法:
for (int x : new int[] {1, 2, 3}) System.out.println(x);
1 2 3
for (int x : reverse(new int[] {1, 2, 3})) System.out.println(x);
3 2 1
根据语言规范,
for (initialization; termination;
increment) {
statement(s)
}
因此,在增强的情况下,您可以正确地递增/递减它,但不能正确地终止
<代码>i
for (int i = arr.length-1; i >= 0; i--) {
System.out.println(arr[i]);
}
注意:数组将从零索引开始,因此如果要反转,请始终考虑int i=arr.length-1。
问题内容: 是否可以在增强的for循环中找到当前索引?如果可以,怎么办? 我知道我们可以用一个额外的变量来检查它。但是还有其他方法。 问题答案: 是否可以在增强的for循环中找到当前索引? 不。如果需要索引,建议您使用普通的for循环。 但是,在这种情况下,您似乎实际上并不需要索引。除非您要处理某种非常奇怪的列表类型,否则可以使用和使用方法,如下所示:
我正在逐个迭代字符串对象列表中的元素: 在这里,每次我调用list上的get()时,列表都会从其一端一直迭代到第i个元素——因此上面循环的复杂性是O(n^2)。 是a.)对于增强型for循环,与上面相同,还是b.)对于循环,将指针保持在最后一个指针所在的位置,因此下面循环的复杂性是O(n)? 如果上面的情况(b)——我想是这样的——在列表上使用迭代器有什么好处吗。这是简单的迭代--没有回头路 蒂亚
我的程序中有两个while循环。第一个是针对游戏菜单的,第二个是针对实际游戏的。如果“Gameover-Event”发生,我想返回菜单。我不知道该怎么做。
问题内容: 在以下语法不再有效的Swift 3.0中,您将如何表达递减索引循环? 问题答案: 这是一种更简单(更快速)的方法。
问题内容: 问题很简单。我的代码中有一个循环: 在此循环中,当我们处于第一次或最后一次迭代时,我想做出不同的反应。 这个怎么做? 问题答案: 您可以使用一个计数器:
我编写了如下代码,但它没有正确返回第一个重复出现的字母。 示例: 在单词中,重复出现的字母是、和。但是字母比字母和更早出现,但我的程序返回而不是。 根据手头的任务,我需要做什么才能使用两个for循环返回t?